使用AND条件MYsql

时间:2013-02-18 12:27:29

标签: php mysql cakephp cakephp-1.3

我需要的是:当我提供training_id 172 AND training_id 174时,它必须仅返回用户150
enter image description here

我试过了,但它不起作用

SELECT user_id FROM Training_users WHERE training_id = 172 AND training_id = 174

大多数时候training_id可能超过2

5 个答案:

答案 0 :(得分:1)

这个查询怎么样:

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的用户。然后它将计算每个用户返回的训练数量,并且只保留一个(2)次训练。

这假设用户不能进行多次训练172和/或174

这对多个自联接的优势在于,如果您想要使用超过2个训练ID进行过滤,则不必为每个训练ID多次加入。

有关GROUP BYHAVING here

的更多信息 编辑:在sqlfiddle中测试后,如果某些用户有多个training_id且一个是172或174

,这似乎有效并且不会返回错误的值

工作sqlfiddle

答案 1 :(得分:0)

这应该有效:

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;

答案 2 :(得分:0)

这应该这样做:

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

答案 3 :(得分:0)

select user_id from work where training_id in (172,174) group by user_id  having count(*)  > 1;

检查SQLFiddle Demo

答案 4 :(得分:-3)

做这样的事情

SELECT user_id FROM Training_users WHERE (training_id = 172) AND (training_id = 174)