>
orなどの比較演算子を使用して行サブクエリが実行されるとき、比較>=
の順序は辞書式 (つまり、辞書) 順序を使用して定義されているのでしょうか、それとも要素ごとに定義されているのでしょうか?
つまりROW (A, B)
、
(79, 48) > (75, 52)
句の行クエリでTRUE
(辞書)またはFALSE
(要素ごとに)ですか?WHERE
これを PostgreSQL でテストしたところ、辞書の順序を使用しているよう(79, 48) > (75, 52)
です。調べてみると、これは MySQL にも当てはまるようです。を検索しても、比較順序についてはあまりわかりません。TRUE
79 > 75
postgresql row subquery
ディクショナリの順序はコンピューター サイエンスの観点からは理にかなっていますが、データベース ユーザーにとっては少し奇妙に見えるかもしれません。これは、行の順序がSQL で最初にリストする列に依存するようになったためです。たとえば、辞書の順序を使用すると、次のようになります。
(52, 75) > (48, 79)
のためにROW (B,A)
。B
同じ行が比較されますが、列が最初にリストされるため、順序は正反対です。
私の質問は:
この動作 (行クエリでの辞書の順序の使用) は、SQL 標準/クロスベンダーからのものですか、それとも実装固有ですか? これについての参照はありますか?