私は、SQLでUNION句を含むクエリにORDER BY句を追加することはできますか?

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。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=15337&siteId=1