繁体   English   中英

将UNION查询按原始表组合两个表的排序结果

[英]Sorting results of UNION query combining two tables by the table of origin

我正在使用UNION运算符从两个不同的表中选择结果。 我希望第一个表的结果比第二个表的结果先。

例如:我有表customer_coupons和segment_coupons。 两个表都有一个名为coupon_id的列。 当我运行涉及这两个表的UNION的查询时,它返回正确的记录,但不是我想要的顺序:它给我两个表的coupon_id以升序混合,但我想显示该表的所有coupon_id第一个表格,然后是第二个表格的所有coupon_id。

这是当前存在的查询:

SELECT coupon_id FROM customer_coupons UNION SELECT coupon_id FROM segment_coupons;

我该如何更改,以使查询上半部分的所有结果都比下半部分的所有结果都要早?

放入固定的表标识字段:

(SELECT 1 AS source_table, coupon_id
FROM customer_coupons)

UNION ALL

(SELECT 2 AS sourcE_table, coupon_id
FROM segment_coupons)

ORDER BY source_table, coupon_id

请注意各个查询的括号。 这迫使MySQL将order by应用到联合的结果,而不是2子查询。

SELECT * FROM (
SELECT coupon_id, 1 as myorder
FROM   customer_coupons
UNION
SELECT coupon_id 2 as myorder
FROM   segment_coupons)
Order by myorder

暂无
暂无

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

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