Вот запрос, который отлично работает:
SELECT rowid as msg_rowid, a, b, c FROM messages m1
А вот еще один, который тоже хорошо:
SELECT rowid as match_rowid FROM messages m2 WHERE x LIKE '%abc%'
Но если я соберу их вместе следующим образом, SQLite будет жаловаться:
SELECT rowid as msg_rowid, a, b, c FROM messages m1
JOIN
(SELECT rowid as match_rowid FROM messages m2 WHERE x LIKE '%abc%')
ON
msg_rowid >= match_rowid - 10 AND msg_rowid <= match_rowid + 5
с сообщением, которое выглядит как вводящее в заблуждение сообщение об ошибке: No such column: rowid
.
Как я могу это исправить?
Запрос выполняется нормально, если я использую поле messages.timestampвместо rowid:
SELECT timestamp as msg_ts, a, b, c FROM messages m1
JOIN
(SELECT timestamp as match_ts FROM messages m2 WHERE x LIKE '%abc%')
ON
msg_ts >= match_ts - 10 AND msg_ts <= match_ts + 5
Это ошибка или ограничение на использование rowid
?