使用sql distinct从两个不同的数据库表中检索相同的列

时间:2011-11-24 11:17:29

标签: mysql sql

我有一个问题,我似乎无法在此找到任何领先优势。我希望从数据库中的两个表中检索相同的列,例如用户和用户组。

如果我要从用户表中选择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

3 个答案:

答案 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_gruposusuarios中不存在的值。