0

>orなどの比較演算子を使用して行サブクエリが実行されるとき、比較>=の順序は辞書式 (つまり、辞書) 順序を使用して定義されているのでしょうか、それとも要素ごとに定義されているのでしょうか?

つまりROW (A, B)

(79, 48) > (75, 52) 

句の行クエリでTRUE(辞書)またはFALSE(要素ごとに)ですか?WHERE

これを PostgreSQL でテストしたところ、辞書の順序を使用しているよう(79, 48) > (75, 52)です。調べてみると、これは MySQL にも当てはまるようです。を検索しても、比較順序についてはあまりわかりません。TRUE79 > 75postgresql row subquery

ディクショナリの順序はコンピューター サイエンスの観点からは理にかなっていますが、データベース ユーザーにとっては少し奇妙に見えるかもしれません。これは、行の順序がSQL で最初にリストする列に依存するようになったためです。たとえば、辞書の順序を使用すると、次のようになります。

 (52, 75) > (48, 79)  

のためにROW (B,A)B同じ行が比較されますが、列が最初にリストされるため、順序は正反対です。

私の質問は:

この動作 (行クエリでの辞書の順序の使用) は、SQL 標準/クロスベンダーからのものですか、それとも実装固有ですか? これについての参照はありますか?

4

1 に答える 1