ありり?
UNION で結合する SELECT 文では ORDER BY って使えんのやったっけ?
エラーにはならないのだが、まったく無視されてるな・・・(^^;
もちろん、SELECT 文単体や、UNION した表全体に対する ORDER BY は問題なく使えるのだが。
UNION の場合、重複行を取るためのソートが表全体に対して行われるわけで、それで各表の ORDER BY は無視されるのかと思いきや、UNION ALL でも一緒やね。
はは。日頃 UNION 使わないもんで(^^;、細かい仕様知らなんだ。
A 003
A 001
A 002
B 102
B 101
C 310
C 320
...
みたいなテーブルから抽出したレコードを
B 101
B 102
A 001
A 002
A 003
C 310
C 320
みたいに並べたいんで(最初の項目の名前をd1、2番目の項目をd2とした場合)、
(SELECT * FROM table1 WHERE d1='B' ORDER BY d2)
UNION
(SELECT * FROM table1 WHERE d1='A' ORDER BY d2)
UNION
(SELECT * FROM table1 WHERE d1='C' ORDER BY d2)
としてたんだけど、
B 102
B 101
A 003
A 001
A 002
C 310
C 320
としか出んね。(テーブルに格納されている順番そのままに出てるだけ)
取りあえずソースが冗長化して格好悪いんだけど、来週にはテストをしたいんで、それぞれ個別に SELECT 実行してプログラム内で結合するようにするわ。
識者の方、良い SQL 文をご存じであればご教示ください。
コメントする