問題ID: 19683 について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID: 19683 について
msg# 1
gto510
投稿数: 6
「UNION演算子の説明として、正しいものはどれか」の回答は
「問合せの結果はソートされる」ですが、本当にそうなのでしょうか。
例題のSQLを実行すると確かにソートされた結果のように見ます。
SQL> SELECT job_id FROM jobs
2 UNION
3 SELECT job_id FROM employees;
JOB_ID
----------
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
10行が選択されました。
--------------------------------------------
しかし、結合の順番を入れ替えたSQLでは違う結果になります。
SQL> SELECT job_id FROM employees
2 UNION
3 SELECT job_id FROM jobs;
JOB_ID
----------
1002
1001
1003
1005
1006
1007
1008
1004
1009
1010
10行が選択されました。
たまたまjobsのjob_idがソートされた状態で登録されていただけで、結果がソートされたとは思えません。
結果がソートされるのであれば、同じ結果になるべきだと思うのですが...
「問合せの結果はソートされる」ですが、本当にそうなのでしょうか。
例題のSQLを実行すると確かにソートされた結果のように見ます。
SQL> SELECT job_id FROM jobs
2 UNION
3 SELECT job_id FROM employees;
JOB_ID
----------
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
10行が選択されました。
--------------------------------------------
しかし、結合の順番を入れ替えたSQLでは違う結果になります。
SQL> SELECT job_id FROM employees
2 UNION
3 SELECT job_id FROM jobs;
JOB_ID
----------
1002
1001
1003
1005
1006
1007
1008
1004
1009
1010
10行が選択されました。
たまたまjobsのjob_idがソートされた状態で登録されていただけで、結果がソートされたとは思えません。
結果がソートされるのであれば、同じ結果になるべきだと思うのですが...
Re: 問題ID: 19683 について
msg# 1.1
gto510
投稿数: 6
いろんなサイトでも「結果はソートされます!」って書いてありますね。
確認している環境のバージョンが違うのが原因なのだと割り切ることにしました。
「結果がソートされること自体マニュアルで保障された動作ではない」、
みたいなコメントもあったしなぁ。
確認している環境のバージョンが違うのが原因なのだと割り切ることにしました。
「結果がソートされること自体マニュアルで保障された動作ではない」、
みたいなコメントもあったしなぁ。