0

UNION 演算子を使用して、2 つの異なるテーブルから結果を選択しています。最初のテーブルの結果を 2 番目のテーブルの結果の前に表示したい。

例: テーブル customer_coupons と segment_coupons があります。両方のテーブルには、coupon_id という名前の列があります。これら 2 つのテーブルの UNION を含むクエリを実行すると、正しいレコードが返されますが、必要な順序ではありません。最初のテーブル、次に 2 番目のテーブルのすべての Coupon_ids。

現在存在するクエリは次のとおりです。

SELECT クーポン_id FROM 顧客_クーポン UNION SELECT クーポン_id FROM セグメント_クーポン;

これを変更して、クエリの前半のすべての結果が後半のすべての結果の前に来るようにするにはどうすればよいですか?

4

2 に答える 2

2

固定テーブル識別フィールドに入れます。

(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

個々のクエリを囲む括弧に注意してください。これにより、MySQLorder byはサブクエリではなく、ユニオンの結果にを適用するようになり2ます。

于 2013-05-24T14:42:17.497 に答える
1
SELECT * FROM (
SELECT coupon_id, 1 as myorder
FROM   customer_coupons
UNION
SELECT coupon_id 2 as myorder
FROM   segment_coupons)
Order by myorder
于 2013-05-24T14:42:47.293 に答える