Mysql 如何从两个具有不同值的独立数据表中查询两个
我将如何质疑以下问题Mysql 如何从两个具有不同值的独立数据表中查询两个,mysql,Mysql,我将如何质疑以下问题 User.name and Groups.description, from the User table and Groups table, where User.id_user = User_Group.id_user, and Groups.id_groups = User_Group.id_groups 我读过关于UNION和Joins的文章,但是UNION要求表具有相同的列数,而Joins似乎只能处理两个表??是否可以组合联合和加入s SELECT Use
User.name and Groups.description,
from the User table and Groups table,
where User.id_user = User_Group.id_user, and Groups.id_groups = User_Group.id_groups
我读过关于UNION
和Join
s的文章,但是UNION
要求表具有相同的列数,而Join
s似乎只能处理两个表??是否可以组合联合
和加入
s
SELECT User.Name
FROM User
FULL JOIN User_Groups
ON User.Id_user= User_Groups.Id_user
UNION
SELECT Group.Description
FROM Group
FULL JOIN User_Groups
ON Group.Id_group= Groups.Id_group
上述代码是否正确???尝试此简化查询:
SELECT u.Name
FROM User u
JOIN User_Groups USING (Id_user)
UNION ALL
SELECT g.Description
FROM Group g
JOIN User_Groups USING (Id_group)
- 使用
而不是UNION ALL
,因为UNION
将删除所有具有相同值的行UNION
的结果只有一个标题,列名取自查询中的第一个UNION
。因此,在您的情况下,列名将是“name”SELECT
只是对上的使用
进行语法简化,因为连接列共享相同的名称,并且只在连接的左侧和右侧出现一次
- 表别名为用户u或简单地将用户u简化为代码中的后续引用
- 您可以
任意多个表,但不限于两个表。我想,你真正想要的是:JOIN
- 但是MySQL中没有
FULL[OUTER]连接。其他RDBMS也有,比如PostgreSQL
我怀疑,这不是您想要的开始,并将其替换为普通的
。阅读[internal]JOIN
SELECT u.Name
FROM User u
JOIN User_Groups USING (Id_user)
UNION ALL
SELECT g.Description
FROM Group g
JOIN User_Groups USING (Id_group)
- 使用
而不是UNION ALL
,因为UNION
将删除所有具有相同值的行UNION
的结果只有一个标题,列名取自查询中的第一个UNION
。因此,在您的情况下,列名将是“name”SELECT
只是对上的使用
进行语法简化,因为连接列共享相同的名称,并且只在连接的左侧和右侧出现一次
- 表别名为用户u或简单地将用户u简化为代码中的后续引用
- 您可以
任意多个表,但不限于两个表。我想,你真正想要的是:JOIN
- 但是MySQL中没有
FULL[OUTER]连接。其他RDBMS也有,比如PostgreSQL
我怀疑,这不是您想要的开始,并将其替换为普通的
。阅读[internal]JOIN
SELECT User.Name, Groups.Description
FROM User
JOIN User_Group on User.id_user = User_Group.id_user
JOIN Groups on Groups.id_groups = User_Group.id_groups
或
不确定您为什么要使用联合
?(除非您需要1列—您没有指定)尝试:
或
不确定您为什么要使用
联合
?(除非您需要1列—您没有指定)我想,您也可以试试这个,不需要join
SELECT u.name, g.description FROM User u, Groups g, User_Group ug, Groups.id gi
WHERE u.id_user=g.id_user and g.id_groups=ug.id_groups;
试试这个,我想,不需要加入
SELECT u.name, g.description FROM User u, Groups g, User_Group ug, Groups.id gi
WHERE u.id_user=g.id_user and g.id_groups=ug.id_groups;
你的预期产出是多少?单列?您的预期输出是什么?一个专栏?我们对问题的理解不同(我阅读了多对多关系)!!我以为OP需要2列,只是对UNION语法感到困惑+1我对使用MySQL很陌生-使用SO学习更复杂的查询(如连接)-刚从您的答案中发现使用-所以如果没有其他东西,您可以教我一些东西@ManseUK:我刚才才看到你的评论,但我同意你的解释-n:m关系-正如你从我的答案中添加的部分所看到的。嗯,好的,我尝试了这个查询,我得到了以下错误:由:br.dao.dao异常引起:java.sql.SQLException:Column'id\u user'未找到。当我的表、user\u组和user都有id\u user列时,为什么找不到id\u user列?I user\u组是一个关联实体,与user有多对1关系,与Group有多对1关系。User\u Group表将Id\u User和Id\u Group作为主复合键。我希望User_Group表通过IDS显示两列数据(用户名称、组描述)。我们以不同的方式读取问题(我读取多对多关系)!!我以为OP需要2列,只是对UNION语法感到困惑+1我对使用MySQL很陌生-使用SO学习更复杂的查询(如连接)-刚从您的答案中发现使用-所以如果没有其他东西,您可以教我一些东西@ManseUK:我刚才才看到你的评论,但我同意你的解释-n:m关系-正如你从我的答案中添加的部分所看到的。嗯,好的,我尝试了这个查询,我得到了以下错误:由:br.dao.dao异常引起:java.sql.SQLException:Column'id\u user'未找到。当我的表、user\u组和user都有id\u user列时,为什么找不到id\u user列?I user\u组是一个关联实体,与user有多对1关系,与Group有多对1关系。User\u Group表将Id\u User和Id\u Group作为主复合键。我希望User_Group表按id显示两列数据(用户名称、组描述)