user157629:
私はすでにそれに挿入され、次のデータを以下の表を持っている想像してみて:
表者
id_person name age
------------------------------------------
1 name1 18
2 name2 37
3 name3 23
今、私はショー30以上の高齢者と20歳未満の者と私が使用することをクエリ実行したい想像しUNION
、このように、句を:
select name, age from person
where age >= 30
UNION
select name, age from person
where age <= 20;
このクエリが与える出力は次のようになります。
name age
-------------------
name2 37
name1 18
しかし、私が使用して出力を注文したい場合はorder by
句を?どこで句を書くべきですか?
次のクエリの作業のいずれかがでしょうか?
select name, age from person
where age >= 30
group by name
order by age asc
UNION
select name, age from person
where age <= 20;
...
select name, age from person
where age >= 30
UNION
select name, age from person
where age <= 20
group by name
order by age asc;
離れて渡します:
あなたの最後のクエリは(がage
、選択リストに曖昧であることは、GROUP BY句に含まれていないので)。
select name, age from person
where age >= 30
UNION
select name, age from person
where age <= 20
group by name
order by age asc;
同じです。
(select name, age from person
where age >= 30)
UNION
(select name, age from person
where age <= 20
group by name)
order by age asc;
それがに説明されているよう文書:
括弧なしのステートメントは、括弧1に相当します...
だから、order by
句は、結果に影響を与えますUNION
。
また、それを知ることが重要です。
UNIONは、デフォルトでは、行の順不同のセットを生成するので、個々のSELECT文に対してORDER BYを使用すると、行が最終結果に表示される順序については何も意味しません
これは使用しないでくださいORDER BY
(あなたが設定したくない場合は、どちらも2つのクエリの中でLIMIT
も)が、最終的な結果のために最後に使用1。