组合和排序两个不同SQL查询的结果

时间:2011-10-19 09:35:50

标签: php mysql sql

我有两张包含两种不同评论的表格。其中一个表包含来自用户的注释(因此它有一个包含其用户ID的外键),另一个表包含来自未登录用户的注释(因此它没有任何用户ID,而是包含一个名称,电子邮件等。)

现在,当我需要打印这些注释时,我希望它们位于相同的列表中,按其created_at值排序。所以我需要做两个不同的查询(第一个也与用户表连接,找到用户名等),然后结合结果。

我以为我可以做一个UNION,但是当表有不同的字段时,这不起作用。我可以通过合并两个结果数组在我的应用程序逻辑中完成它,但如果有一个更好的解决方案可以直接在数据库中完成,那么这似乎很麻烦。

2 个答案:

答案 0 :(得分:1)

通过指定UNION部分中的字段来对齐两个表时,您仍然可以使用SELECT

示例:

Table1(id,comment,enterdate,userid)

Table2(id,comment,enterdate)

SELECT id, comment, enterdate, userid, 'Logged In' as Type FROM Table1
UNION
SELECT id, comment, enterdate, NULL, 'Guest' FROM Table2

然后可以根据需要订购UNION

答案 1 :(得分:0)

如果您将第一个表的userId和第二个表中的名称命名为ex,则可以使用您建议的UNION sollution。身份

从loggedUsers UNION中选择userId作为Identity,created_at作为日期 选择名称作为Identity,created_at作为来自guestUsers的日期

希望有所帮助......