2016-02-29 71 views
0

我有一個名爲pools的表,其中包含id,名稱和名爲alerts的表,其中包含id,poolid,create_date。我想創建一個SQL查詢,這將使我在alerts表上沒有記錄的所有池的日期等於今天?獲取沒有關係的結果

回答

0

這可以通過多種方式來實現,其中之一是NOT EXISTS():

SELECT * FROM pools p 
WHERE NOT EXISTS(select 1 from alerts t 
       where t.poolid = p.id 
         and t.create_date < NOW()) 

另一種方式是不是在:

SELECT * FROM pools p 
WHERE id NOT IN(select poolid from alerts t 
       where t.create_date < NOW()) 

如果你想通過加入做到這一點:

SELECT p.*,t.id FROM pools p 
LEFT OUTER JOIN alerts t 
ON(p.id = t.poolid and t.create_date < NOW()) 
WHERE t.id is null 
+0

有沒有一些小的改動和所做的工作,非常感謝:) –

-1

您可以使用左外連接到從沒有警報池獲得記錄:

select * from pools 
left outer join alerts on pools.id = alerts.poolid 
where alerts.id is null or alerts.created_date < now() 
+0

也就是說是絕對錯誤的,哪裏是ON子句?甚至不會運行,而且你沒有比較今天的任何事情。你爲什麼用同名的別名進行別名?它與沒有對其進行別名相同 – Yossi

+0

複製同級的答案,然後低估他們的答案。這是要走的路,不是嗎? –

+0

大聲笑,你是說我複製了你的錯誤答案?你是否認真地指責我做這樣愚蠢的事情? – Yossi

0

我猜你正在尋找類似的查詢這個

select p.id,p.name 
from pools p 
inner join alerts a on p.id=a.poolid 
where date(a.created_date)!=date(sysdate())