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 ответ

Решение

Эта ошибка была исправлена ​​в SQLite 3.8.7.2.

Другие вопросы по тегам