[英]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.