我使用两个表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 <>
无法正常工作。
答案 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