AS x WHERE x=1;
Говорит, что колонка x не существует. В SQLite3 тот же запрос срабатывает.
Т.е. на самом деле проблема в более сложном запросе, но, как я понимаю, та же самая. Почему «x» не существует? Может надо как-то иначе указывать имя поля в таких случаях?
Кавычки ставил.
Потому что это чисто sqlite-овская "отсебятина". Т.е. в большинстве RDBMS alias-ы из SELECT list "не видны" в WHERE (что логично, и кажется, соответствует ISO SQL). Попробуйте в разных СУБД вот тут, например — https://dbfiddle.uk/?rdbms=sqlite_3.27&fiddle=c71bc2af22afd465344a6305d5223722 — увидите.
Обсуждают сегодня