0

I've been trying to join all the rows from two different tables. I've tried UNION and LEFT JOIN.

Right now I've just been using two separate queries and had one display after the other. I would like to merge the two queries to display at the same time.

table 1 is called 'approves' and table 2 is called 'comments'.

approves
- id
- postID
- postUserID
- userID

comments
- id
- postID
- postUserID
- userID
- comment
- date

4

3 回答 3

6

这是一个 UNION 的例子

select id, postID, postUserID, userID, comment, date from comments
union
select id, postID, postUserID, userID, null, null from approves 
于 2013-02-06T18:24:31.257 回答
0

你能插入你正在使用的 SQL 吗?联合将合并两个表,连接将依次从表中获取所有行并合并所有关联的行。JOIN 默认为内连接。UNION 实际上将合并来自两个表的结果。如果您想要 a 中的所有行以及表 b 中的相应注释,则使用左连接。

于 2013-02-06T18:10:28.727 回答
0

根据您的表格,您可以JOIN使用以下表格:

select *
from approves a
inner join comments c
    on a.userid = c.userid
    and a.postid = c.postid

我猜您将需要基于postid和连接多个列上的表userid

我使用了INNER JOIN将返回两个表之间的所有匹配行。如果您只想返回approves表中的那些记录,那么您可以使用LEFT JOIN. 如果您在学习连接语法方面需要帮助,这里有一个关于连接的可视化解释

您可以使用 aUNION但必须为每个表选择所需的列,因为 a 的每个查询中的列数UNION必须相等。所以UNION会是:

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,可用于确定数据来自哪个表。

于 2013-02-06T18:16:22.313 回答