我有两个表,我想在一个查询中取几个值。
表:
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不起作用。我不明白为什么它不起作用因为我以前和它似乎工作
答案 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
不能同时为10
,11
或12
,而是需要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')