这是我的查询:
SELECT pr.ONE FROM prec pr WHERE ... ORDER BY pr.time_of_insertion DESC LIMIT 10) UNION (SELECT hr.TWO FROM hrec hr WHERE ... ORDER BY hr.time_of_insertion DESC LIMIT 10)
两个表都有一个共同的字段名称,尽管它们之间没有关联,即 time_of_insertion 。我想做的是执行查询以检索应该应用于所有联合的限制X (总共X行,而不是每个查询的Y + Y),标准应该是ORDER BY time_of_insertion适用于BOTH表的DESC 。我希望我能让我度过难关。我怎么能这样做?非常感谢你......
答案 0 :(得分:0)
UNION
的文档解释了如何实现两个目标:
但是,对于单个
ORDER BY
语句使用SELECT
并不意味着行在最终结果中出现的顺序,因为默认情况下UNION
会生成一组无序行。因此,在此上下文中使用ORDER BY
通常与LIMIT结合使用,因此它用于确定要为SELECT
检索的所选行的子集,即使它不一定会影响最终UNION
结果中这些行的顺序。如果ORDER BY
中LIMIT
出现SELECT
,则会对其进行优化,因为它无论如何都无效。要使用
ORDER BY
或LIMIT
子句对整个UNION
结果进行排序或限制,请为各个SELECT
语句添加括号并放置ORDER BY
或{ {1}}在最后一个之后。
用简单的英语,你可以LIMIT
。您所要做的就是将它添加到查询的末尾,在括号外(与ORDER BY time_of_insertion DESC
处于同一级别)和也可以在{{1}处使值可用}级别,即将UNION
放入UNION
s。
关于time_on_insertion
,您也可以采用相同的方式:在SELECT
之前放置LIMIT 10
。
查询:
LIMIT 10