查询拉回用户不符合WHERE语句的标准

时间:2013-12-16 10:38:55

标签: mysql sql select in-clause

我正在从数据库中检索用户以显示在下拉列表中。我需要所有匹配正确组ID的用户,这些用户也是两个特定角色之一。以下是我到目前为止的陈述:

SELECT a.USER_ID AS userid, a.GROUP_ID, a.ROLE, 
b.ID, b.NAME, b.LAST_NAME FROM b_sonet_user2group a 
INNER JOIN b_user b ON a.USER_ID = b.ID 
WHERE a.GROUP_ID = $groupid 
AND a.ROLE = 'A' OR a.ROLE = 'E'

这会吸引甚至不在群组中的用户,并且我输出$ groupid并显示正确的数字。我在这个查询的WHERE部分做错了吗?当一个用户只在符合该条件的用户列表中出现一次时,我也会重复一个用户。如果我遗漏了一些简单的东西,请告诉我。

谢谢

2 个答案:

答案 0 :(得分:1)

您必须使用IN Clause代替 OR

试试这个:

SELECT a.USER_ID AS userid, a.GROUP_ID, a.ROLE, b.ID, b.NAME, b.LAST_NAME 
FROM b_sonet_user2group a 
INNER JOIN b_user b ON a.USER_ID = b.ID 
WHERE a.GROUP_ID = $groupid AND a.ROLE IN ('A', 'E');

答案 1 :(得分:1)

你可以试试这个:

SELECT a.USER_ID AS userid, a.GROUP_ID, a.ROLE, 
b.ID, b.NAME, b.LAST_NAME FROM b_sonet_user2group a 
INNER JOIN b_user b ON a.USER_ID = b.ID 
WHERE a.GROUP_ID = $groupid 
AND (a.ROLE = 'A' OR a.ROLE = 'E')

希望有所帮助......