可能重複:
How to select rows where multiple joined table values meet selection criteria?在多個外部表的標準需要獲取表中的行要滿足
我有一個Users
表,其中包含了一些選項,爲每個用戶Optons
表。每個用戶可以選擇多個選項。
這是表什麼樣子:
-- this is where user names are stored
create table Users
(
ID int,
UserName varchar(255)
)
-- this table contains options
-- (one flag per row)
create table Options
(
ID NOT NULL AUTO_INCREMENT int,
Flag int,
User_ID int // foreign key
)
我想獲得具有設置兩個某些選項的所有用戶,但只有當他們兩個設置。
例如,這將返回其中任何選項設置用戶:
-- find all users with flags 1 and 2 set
select u.UserName from Users u
inner join Options o on o.User_ID = u.ID
where o.Flag in (1, 2)
我怎樣才能使它返回其有兩個條目(標記1和2)Options
表中的所有用戶?
+1謝謝,我發現在回答[此線索](http://stackoverflow.com/q/4047314/1488067)同時。 – Lou
@Dilbert不用客氣:D –
如果用戶有兩個o.flag = 2的條目,而o.flag = 1則沒有這個查詢,這個查詢會錯誤地返回記錄。這就是爲什麼你需要'有計數(DISTINCT FLAG)= 2'而不是'COUNT(*)' –