假設我們有一個表Users
,它只有一列UserId
這是主鍵。如何編寫這個MySQL查詢?
我們有第二張表Events
,它有三列EventId
,UserId
和Status
。 A Status
是BOOL NOT NULL
。 UserId
已編入索引但不是唯一的。
表Status
在Users.UserId
上有外鍵約束UserId
。
現在我想要查詢所有UserId
s,其中Events
中沒有行,因此Event.Status = TRUE
。有沒有辦法做到這一點JOIN
? (一個語句只首選)
例如:
Users
--------
1
2
3
Events
--------
EventId UserId Status
1 1 FALSE
2 1 TRUE
3 2 FALSE
4 2 FALSE
然後我在尋找查詢應該返回:
UserId
-------
2
3
謝謝!
左連接似乎是一個更好的選擇。第一個選項使用可影響性能的DISTINCT。 http://stackoverflow.com/questions/521055/in-sql-how-does-using-distinct-affect-performance – isobar 2011-06-13 04:47:51
@isobar:好的一點,引用的文章沒有使用DISTINCT,並且性能特徵將會不同在那裏。 – 2011-06-13 05:02:10
謝謝!你們真棒! =)實際上,幸運的是,在實際場景中,每個UserId只有一個TRUE。 – javic 2011-06-13 05:06:31