次のクエリは SQL Server では機能しますが、SQLite 3.8.7 では機能しません。その理由を知りたいです。
テーブル
l | r
0 | 10
0 | 2
8 | 10
クエリ
SELECT * FROM Segments AS s1
LEFT JOIN Segments AS s2
ON ((s2.l <= s1.l AND s2.r > s1.r)
OR (s2.l < s1.l AND s2.r >= s1.r));
期待される出力
s1.l | s1.r | s2.l | s2.r
0 | 10 | null | null
0 | 2 | 0 | 10
8 | 10 | 0 | 10
しかし、私は得た
s1.l | s1.r | s2.l | s2.r
0 | 10 | 0 | 2
0 | 2 | 0 | 10
8 | 10 | 0 | 10
そして、表現の順番を入れ替えると
((s2.l < s1.l AND s2.r >= s1.r) (s2.l <= s1.l AND s2.r > s1.r))
私は得た
s1.l | s1.r | s2.l | s2.r
0 | 10 | 8 | 10
0 | 2 | 0 | 10
8 | 10 | 0 | 10
これは | を使用して解決されました。ORの代わりに、なぜORがうまくいかなかったのだろうか?
SQLFiddle http://sqlfiddle.com/#!7/15859/22/1の例を次に示します。
ありがとう