Mysql 连接两个不同表中的所有行

Mysql 连接两个不同表中的所有行,mysql,join,union,Mysql,Join,Union,我一直在尝试连接两个不同表中的所有行。我试过联合,然后离开了 现在我刚刚使用了两个独立的查询,一个接一个地显示。我想合并两个查询以同时显示 表1称为“批准”,表2称为“评论” 批准 -id -posted -postserid -用户ID 评论 -id -posted -postserid -用户ID -评论 -日期 你能插入你正在使用的SQL吗?Union将合并这两个表,而join将依次从表中获取所有行并合并所有关联行。联接默认为内部联接。UNION实际上将合并两个表的结果。如果需要表a中的所

我一直在尝试连接两个不同表中的所有行。我试过联合,然后离开了

现在我刚刚使用了两个独立的查询,一个接一个地显示。我想合并两个查询以同时显示

表1称为“批准”,表2称为“评论”

批准
-id
-posted
-postserid
-用户ID

评论
-id
-posted
-postserid
-用户ID
-评论
-日期


你能插入你正在使用的SQL吗?Union将合并这两个表,而join将依次从表中获取所有行并合并所有关联行。联接默认为内部联接。UNION实际上将合并两个表的结果。如果需要表a中的所有行以及表b中的相应注释,请使用左联接。

是否可以插入正在使用的SQL?Union将合并这两个表,而join将依次从表中获取所有行并合并所有关联行。联接默认为内部联接。UNION实际上将合并两个表的结果。如果需要表a中的所有行以及表b中的相应注释,请使用左联接。

根据您的表,您似乎可以
联接表:

select *
from approves a
inner join comments c
    on a.userid = c.userid
    and a.postid = c.postid
我猜您将需要基于
postid
userid
在多个列上联接表

我使用了一个
内部联接
,它将返回两个表之间的所有匹配行。如果只想返回
approves
表中的那些记录,则可以使用
左联接。如果您需要学习连接语法的帮助,这里有一个很好的方法

您可以使用
联合
,但必须为每个表选择所需的列,因为联合
的每个查询中的列数必须相等。因此,
联合体将是:

select id, postid, postUserId, userId, null as comment, null as date, 'approves' as Src
from approves 
union all
select id, postid, postUserId, userId, comment, date, 'comments' as src
from comments 

请注意,我添加了一个名为
src
的列,可用于确定数据来自哪个表。

根据您的表,您似乎可以
加入这些表:

select *
from approves a
inner join comments c
    on a.userid = c.userid
    and a.postid = c.postid
我猜您将需要基于
postid
userid
在多个列上联接表

我使用了一个
内部联接
,它将返回两个表之间的所有匹配行。如果只想返回
approves
表中的那些记录,则可以使用
左联接。如果您需要学习连接语法的帮助,这里有一个很好的方法

您可以使用
联合
,但必须为每个表选择所需的列,因为联合
的每个查询中的列数必须相等。因此,
联合体将是:

select id, postid, postUserId, userId, null as comment, null as date, 'approves' as Src
from approves 
union all
select id, postid, postUserId, userId, comment, date, 'comments' as src
from comments 

请注意,我包含了一个名为
src
的添加列,可用于确定数据来自哪个表。

这里是联合的一个示例

select id, postID, postUserID, userID, comment, date from comments
union
select id, postID, postUserID, userID, null, null from approves 

这里有一个工会的例子

select id, postID, postUserID, userID, comment, date from comments
union
select id, postID, postUserID, userID, null, null from approves 

你能发布表格结构吗?很难弄清楚在没有任何约束的情况下这些表将连接到什么上details@IanQuinn编辑您的原始问题并在那里发布表格结构,不要将其放在评论中。您发布表格结构吗?很难弄清楚在没有任何约束的情况下这些表将连接到什么上details@IanQuinn编辑您的原始问题并将表结构发布到那里,不要将其放在注释中,我在使用mysql\u fetch\u assoc mysql\u查询时遇到了一个布尔错误(“从批准a.userID=c.userID和a.postID=c.postID上的内部联接注释c中选择*,其中postserid='$userID'&&userID!='$userID'按id顺序描述限制0,10”);@IanQuinn我不确定是什么错误,但我还包括了一个
UNION
版本来返回数据。我尝试了这个,当我使用mysql\u fetch\u assoc mysql\u查询(“选择*从批准a.userID=c.userID和a.postID=c.postID上的内部联接注释c,其中postserid='$userID'&&userID!='$userID'按id顺序描述限制0,10“);@IanQuinn我不确定是什么错误,但是我还包括了一个
UNION
版本来返回数据好的,所以一旦我有了这个,如果我在WHILE循环中有一个获取行的查询,有没有办法确定当前记录来自哪个表?是的-添加另一个任意列,比如在第一个列中添加一个硬编码的1第二个是2。,你可以用它来判断。好的,一旦我有了这个,如果我在WHILE循环中有一个获取行的查询,有没有办法确定当前记录来自哪个表?是的-添加另一个任意列,第一个是硬编码的1,第二个是2。,你可以用它来判断。