繁体   English   中英

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

[英]Combining and sorting result of two different SQL queries

我有两个表,其中包含两种不同类型的注释。 其中一个表包含来自用户的注释(因此它具有包含他们的用户ID的外键),另一个表包含来自未登录用户的注释(因此它没有任何用户ID,但包含一个名称) ,电子邮件等)

现在,当我需要打印这些注释时,我希望它们在同一列表中,并按它们的created_at值排序。 因此,我需要执行两个不同的查询(第一个也与用户表联接,以查找用户名等),然后组合结果。

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

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

例:

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

如果您将第一个表的用户名命名为,而第二个表的名称命名为ex,则可以使用您建议的UNION解决方案。 身分识别

选择userId作为Identity,将created_at作为记录用户的日期UNION选择name作为Identity,将created_at作为记录的guestUsers

希望能帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM