我的问题是:
我有一张“用户”表:
id_us | name
-------------
1 | bob
2 | ken
3 | jones
而且我还有一张放宠物“宠物”的 table
id_pet | pet
-------------
1 | dog
2 | cat
3 | fish
和一个存储用户和宠物关系的表“user_pets”
id | id_us | pet
-------------------
1 | 1 | 1 --------> (dog)
2 | 1 | 2 --------> (cat)
3 | 2 | 1 --------> (dog)
4 | 3 | 3 --------> (fish)
3 | 3 | 2 --------> (cat)
我一直在尝试创建一个查询,为我提供所有没有狗的用户,我的查询的问题是因为例如用户“Bob”有两只宠物,其中一只不是狗,即使他是狗主人,它也会在我的查询结果中返回。
查询:
SELECT
usuario.name
FROM
usuario
JOIN
user_pets ON usuario.id_us = user_pets.id_us
WHERE
user_pets.pet != 1
GROUP BY
usuario.name
最佳答案
SELECT
usuario.name
FROM
usuario
LEFT JOIN user_pets
ON usuario.id_us = user_pets.id_us
AND user_pets.pet = 1
WHERE user_pets.id is null
或
SELECT
usuario.name
FROM
usuario
WHERE NOT EXISTS (SELECT id_ud FROM user_pets WHERE user_pets.pet = 1 ANd USerpets.id_us = usuario.ID)
或者
SELECT
usuario.name
FROM
usuario
WHERE usuario.ID NOT IN (SELECT id_ud FROM user_pets WHERE user_pets.pet = 1
关于mysql - SQL中如何使用查询关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128390/