如何正确的SQL查询?

时间:2013-09-04 20:07:26

标签: mysql sql

我有两个表,我想在一个查询中取几个值。

表:

users
|user_id  |
|name     |

user_group_link
|user_id  |
|group_id |

这是我的疑问:

SELECT users.*, user_group_link.* 
FROM users
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id = 10 
AND user_group_link.group_id = 11
AND user_group_link.group_id = 12

问题是AND不起作用。我不明白为什么它不起作用因为我以前和它似乎工作

3 个答案:

答案 0 :(得分:7)

此查询存在的问题:没有一行有10,11 AND 12作为group_id ...您需要 OR

SELECT users.*, user_group_link.* 
FROM users
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id = 10 
OR user_group_link.group_id = 11
OR user_group_link.group_id = 12

替代:

SELECT users.*, user_group_link.* 
FROM users
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id IN (10,11,12)

答案 1 :(得分:3)

user_group_link.group_id不能同时为101112 ,而是需要OR代替AND

所以你的查询应该是:

SELECT users.*, user_group_link.* 
FROM users
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id = 10 
OR user_group_link.group_id = 11
OR  user_group_link.group_id = 12

答案 2 :(得分:2)

尝试使用IN

  SELECT users.*, user_group_link.* 
  FROM users
  LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
  WHERE user_group_link.group_id IN ('10','11','12')