2017-04-02 3 views
0

私は、複数のテーブルの結合n結合を含むクエリに取り組んでいます。希望の結果が得られましたが、これらの結果を特定の順序で取得したいので、全体を結果は1つの列に従って順序付けされています。ここ は、私が働いているコードの抜粋です:で注文する

select name, age 
from UserUni 
order by age 
union all 
select age, Name 
from UserOffice 
order by age 
+0

参照:http://stackoverflow.com/questions/4715820/how-to-order-by-with-un-union、つまり100以上のアップボックスの回答。 – ira

答えて

0

私たちは両方のステートメントでorder byを使用することはできません。なぜなら、最後の結合は1つの結果の終わりを与え、2つのorder byステートメントをどのように使用することが可能になるからです。 ここで詳細を確認できます。

https://finalcodingtutorials.blogspot.ae/2017/03/order-by-clause-with-union-in-sql-server.html

うまくいけば、それはあなたが声明によって完全な詳細や労働組合との順序をお知らせしますあなたの問題を解決します。

+0

問題は、組合の終わりに組合を置くことによって解決されました。このブログで与えられた詳細は非常に意味があります。ありがとう –

1

だけUNIONクエリの最後にORDER BY句を追加し、それはクエリ全体に適用する必要があります。

select name, age 
from UserUni 
union all 
select name, age 
from UserOffice 
order by age 

UNIONクエリの後半に表示される列の順序を入れ替えたのは、同じ列に年齢と名前を入れても意味がないためです。 UNIONクエリの一般的な要件は、クエリの両方の半分ですべての列の型と数が同じであることです。 1つの例外はMySQLであり、数字とテキストを混在させるように見えるかもしれませんが、この場合でも暗黙的な型変換がフードの下で行われます。