PostgreSQL:如何结合按日期排序的3个表
发布时间:2020-12-13 16:35:05 所属栏目:百科 来源:网络整理
导读:我有来自3个不同的不相关表的3个不同的SQL查询(全部使用LIMIT和ORDER BY). 我想根据“日期”字段(显示在所有字段中)合并和排序结果 执行此操作的SQL是什么? 最好的方法是创建一个包含其他三个表中的公共字段的新表,并在公共日期字段上添加一个索引.原始的三
我有来自3个不同的不相关表的3个不同的SQL查询(全部使用LIMIT和ORDER BY).
我想根据“日期”字段(显示在所有字段中)合并和排序结果 执行此操作的SQL是什么?
最好的方法是创建一个包含其他三个表中的公共字段的新表,并在公共日期字段上添加一个索引.原始的三个表应包含链接到公用表的外键.使用此设计,查询变得简单:
SELECT * FROM common_table ORDER BY "date" DESC LIMIT 100 如果还需要来自更具体表的数据,则可以使用LEFT JOIN来在同一查询中选择该数据. 如果您无法更改设计并且性能不是问题,那么您可以使用UNION ALL在排序之前组合来自所有三个表的结果: SELECT * FROM table1 UNION ALL SELECT * FROM table2 UNION ALL SELECT * FROM table3 ORDER BY "date" DESC LIMIT 100 请注意,只有所有表具有相同的结构时,上述操作才有效.如果您在一个表中出现但在其他表中没有的字段,那么您应该从SELECT中省略它们,否则在其他表中为该列返回NULL.例如,如果: > table1包含列a,b,c和日期. 然后用这个: SELECT a,c,"date" FROM table1 UNION ALL SELECT NULL AS a,"date" FROM table2 UNION ALL SELECT a,NULL as b,"date" FROM table3 ORDER BY "date" DESC LIMIT 100 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |