SQLite: ИЛИ и |
Следующий запрос работает в 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
Это было решено с помощью | вместо ИЛИ, но мне интересно, почему ИЛИ не работает?
Вот пример на SQLFiddle http://sqlfiddle.com/
Спасибо
1 ответ
Решение