SELECT customer_id, first_name
FROM Customers
WHERE NOT EXISTS (
SELECT order_id
FROM Orders
WHERE Orders.customer_id = Customers.customer_id
);
At first glance your original attempt seems pretty close. I'm assuming that clockDate is a DateTime fields so try this:
IF (NOT EXISTS(SELECT * FROM Clock WHERE cast(clockDate as date) = '08/10/2012')
AND userName = 'test')
BEGIN
INSERT INTO Clock(clockDate, userName, breakOut)
VALUES(GetDate(), 'test', GetDate())
END
ELSE
BEGIN
UPDATE Clock
SET breakOut = GetDate()
WHERE Cast(clockDate AS Date) = '08/10/2012' AND userName = 'test'
END
Note that getdate gives you the current date. If you are trying to compare to a date (without the time) you need to cast or the time element will cause the compare to fail.
If clockDate is NOT datetime field (just date), then the SQL engine will do it for you - no need to cast on a set/insert statement.
IF (NOT EXISTS(SELECT * FROM Clock WHERE clockDate = '08/10/2012')
AND userName = 'test')
BEGIN
INSERT INTO Clock(clockDate, userName, breakOut)
VALUES(GetDate(), 'test', GetDate())
END
ELSE
BEGIN
UPDATE Clock
SET breakOut = GetDate()
WHERE clockDate = '08/10/2012' AND userName = 'test'
END
As others have pointed out, the merge statement is another way to tackle this same logic. However, in some cases, especially with large data sets, the merge statement can be prohibitively slow, causing a lot of tran log activity. So knowing how to logic it out as shown above is still a valid technique.
BEGIN
IF NOT EXISTS (SELECT * FROM EmailsRecebidos
WHERE De = @_DE
AND Assunto = @_ASSUNTO
AND Data = @_DATA)
BEGIN
INSERT INTO EmailsRecebidos (De, Assunto, Data)
VALUES (@_DE, @_ASSUNTO, @_DATA)
END
END
-- The SQL NOT EXISTS Operator will act quite opposite to EXISTS Operator.
-- It is used to restrict the number of rows returned by the SELECT Statement.
SELECT column_name
FROM table_name
WHERE NOT EXISTS (Write Subquery to Check);
Code Example |
---|
Sql :: number(10 2) in sql means |
Sql :: sql merge statement |
Sql :: FIND ABOVE AVERAGE SALARY EARNER IN SQL |
Sql :: sql server inner join |
Sql :: SQL Server date literal |
Sql :: mysql create view |
Sql :: merge command in sql |
Sql :: sql group_concat |
Sql :: create procedure |
Sql :: three inner joins sql |
Sql :: systems sql |
Sql :: show broken table mysql |
Sql :: mysql allow connection from any host |
Sql :: reset postgresql password windows |
Sql :: drop table oracle |
Sql :: snowflake insert select |
Sql :: Oracle SQL join three tables and group by column |
Sql :: sql xor |
Sql :: how to reset autoincrement in sqlite java |
Sql :: mysql order by list |
Sql :: create a table |
Sql :: desc sql |
Sql :: postgres where |
Sql :: sql query interview questions githu |
Sql :: not in sql |
Sql :: left join |
Sql :: on delete set default |
Sql :: ajax error exception handeling |
Sql :: mysql select all and rename one |
Sql :: How to concatenate text from multiple rows into a single text string in SQL Server |