我需要的是:當我給training_id 172和174 training_id它必須返回用戶150只
使用AND條件MYsql的
我試過,但它doen't工作
SELECT user_id FROM Training_users WHERE training_id = 172 AND training_id = 174
大部分的時間training_id可能會超過2
我需要的是:當我給training_id 172和174 training_id它必須返回用戶150只
使用AND條件MYsql的
我試過,但它doen't工作
SELECT user_id FROM Training_users WHERE training_id = 172 AND training_id = 174
大部分的時間training_id可能會超過2
怎麼樣這個查詢:
SELECT user_id, COUNT(*) as nbTrainings FROM Training_users
WHERE training_id = 172 OR training_id = 174
GROUP BY user_id
HAVING nbTrainings = 2
它會過濾具有培訓172或174的用戶,那麼它會統計每個用戶返回多少培訓只有經過兩次培訓才能保留一個人。
此,假設用戶不能有多個培訓172和/或174
的這對多自聯接的好處是,你不必加入多個次,每次培訓的ID,如果你想以超過2個訓練ID進行過濾。
上GROUP BY
和
HAVING
here
編輯
更多信息:經過sqlfiddle測試這似乎工作,如果某些用戶有多個training_id,一個是172或174
不返回錯誤的值做這樣的事情
SELECT user_id FROM Training_users WHERE (training_id = 172) AND (training_id = 174)
這也將返回另一個用戶ids – iiro 2013-02-18 12:29:04
@iiro不要求唯一的用戶ID – Vineet1982 2013-02-18 12:30:14
@ Vineet1982「它必須只返回用戶150」 – Husman 2013-02-18 12:30:42
這應該工作:
SELECT a.user_id FROM Training_users a, Training_users b WHERE a.training_id = 172 and a.user_id = b.user_id AND b.training_id = 174;
這應做到:
SELECT
a.user_id
FROM
Training_users a
RIGHT JOIN
Training_users b ON a.user_id = b.user_id AND b.training_id = 174
WHERE
a.training_id = 172
select user_id from work where training_id in (172,174) group by user_id having count(*) > 1;
您在此表中的主鍵是什麼? – 2013-02-18 12:28:40
user_id和training_id – Fury 2013-02-18 12:30:48
問題是你的PK是在兩個領域,所以唯一性只存在於這兩個領域,因此你的查詢方法是行不通的。你需要在你的查詢中也有user_id('WHERE user_id = 150') – 2013-02-18 12:32:10