我有一个问题,我似乎无法在此找到任何领先优势。我希望从数据库中的两个表中检索相同的列,例如用户和用户组。
如果我要从用户表中选择John,John将显示在UserGroup表中,而在User Table中,John将不再显示。是否有可能进行类似的查询?
User
1. John
2. Jane
3. Tom
User Group
Empty
选择约翰之后:
User
2. Jane
3. Tom
User Group
1. John
而不是拥有以下(我现在拥有):
User
1. John
2. Jane
3. Tom
选择约翰之后:
UserGroup
1. John
我现在唯一能想到的方法如下:
SELECT DISTINCT usuarios.id_usuario
FROM usuarios
JOIN
usuarios_grupos
ON
(usuarios_grupos.id_usuario = usuarios.id_usuario)
但是,我运行了查询,并没有给出理想的结果。对此有何想法?
我做了UNION ALL:
SELECT DISTINCT usuarios.id_usuario
FROM usuarios
UNION ALL
SELECT DISTINCT usuarios_grupos.id_usuario
FROM usuarios_grupos
我得到了以下结果:
1. John
2. Jane
3. Tom
4. John
5. Jane
6. Tom
答案 0 :(得分:1)
这两个查询可能会按预期执行,第一个显示所有用户,但第二个查询除外:
SELECT DISTINCT usuarios.id_usuario
FROM usuarios
WHERE id_usario NOT IN (SELECT DISTINCT id_usuario FROM usuarios_grupos)
第二个
SELECT DISTINCT usuarios_grupos.id_usuario
FROM usuarios_grupos
答案 1 :(得分:0)
会像
SELECT t2.id_usuario FROM usuarios t2 WHERE NOT EXISTS (SELECT usuarios_grupos.id_usuario FROM usuarios_grupos) t1
工作?
答案 2 :(得分:0)
你可以尝试一下吗?:
SELECT DISTINCT usuarios.id_usuario
FROM usuarios
UNION ALL
SELECT DISTINCT usuarios_grupos.id_usuario
FROM usuarios_grupos
WHERE id_usuario NOT IN (
SELECT DISTINCT usuarios.id_usuario
FROM usuarios)
这应该为您提供usuarios
中的值和usuarios_grupos
中usuarios
中不存在的值。