是不等号!=和<>我的mysql查询不起作用

时间:2015-08-07 18:08:11

标签: php mysql sql

我使用两个表user_details,其中user_id和name是其字段。第二个表是group_user,其中user_id和group_id是其字段。这里group_id与我创建组的组表有关。 我想要那些不在小组中的名字。我正在使用mysql查询,

SELECT 
    user_details.name 
FROM 
    group_users 
    INNER JOIN
        user_details 
        ON 
        group_users.user_id = user_details.user_id 
WHERE 
    group_id != 160
;

SELECT 
    user_details.name 
FROM 
    group_users   
    INNER JOIN
        user_details
        ON 
        group_users.user_id = user_details.user_id 
WHERE 
    group_id <> 160
;

但是我没有得到特别的结果!= and <>无法正常工作。

2 个答案:

答案 0 :(得分:2)

这应该有效:

SELECT ud.name 
FROM user_details AS ud
LEFT JOIN group_users AS gu ON ud.user_id = gu.user_id AND gu.group_id = 160
WHERE gu.user_id IS NULL
;

或者

SELECT ud.name 
FROM user_details AS ud
WHERE ud.user_id NOT IN (
   SELECT user_id 
   FROM group_users AS gu 
   WHERE gu.group_id = 160
)
;

首先,您将找到与该组没有关联的所有用户。在第二种情况下,您将发现用户不在与该组关联的用户集中。 (结果相同,但根据数据分布,可能比另一个更快。)

答案 1 :(得分:1)

您可能会混淆SQL。尝试更具体地说明 group_id 指的是哪个列。

将WHERE子句更改为your_table_name.group_id != 160