以下是我现在得到的,它无法正常工作,因为它检查一行有两个不同的值.
SELECT users.*
FROM users INNER JOIN roles_users ru ON users.id = ru.user_id
WHERE ru.role_id = 1 AND ru.role_id = 2
Run Code Online (Sandbox Code Playgroud)
我想选择在roles_users中有两行的所有用户.一行role_id应该有一个,第二行应该有role_id两个.
因此,选择在roles_users中有两行的所有用户,其中一行拥有role_id = 1,另一行拥有role_id = 2.
上面的查询选择在roles_users中有一行的所有用户,这些用户有第一行,然后是两行,这就是为什么我没有得到结果而且它不起作用的原因.那我怎么能这样做呢?
SELECT users.id
FROM users INNER JOIN roles_users ON users.id = roles_users.user_id
WHERE roles_users.role_id IN (1, 2)
GROUP BY users.id
HAVING COUNT(*) = 2
Run Code Online (Sandbox Code Playgroud)