Ошибка в синтаксисе SQL.

bitwise_sql

Помогите понять, что неправильно в запросе:На SQLite запрос работает нормально, а MySQL выдает сообщение об ошибке...
SELECT
 t.id,
 (CASE WHEN (t.a = 'A') THEN 'A' WHEN (t.b = 'B') THEN 'B' WHEN (t.c = 'C') THEN 'C' END) as col
FROM test t
WHERE
 col= 'A';
Ошибка:ERROR 1054 (42S22): Unknown column 'col' in 'where clause'
6 ответов

bitwise_sql

bitwise_sql,Что именно непонятно?Не можете перевести сообщение об ошибке?


bitwise_sql

miksoft,нет, не понятно как раз почему интерпретатор считает что 'col' - неизвестный столбец. И правильно ли я построил запрос синтаксически?


bitwise_sql

Не сразу заметил, что col - это алиас выражения, а не отсутствующее в таблице поле.Используйте HAVING вместо WHERE.


bitwise_sql

miksoft,Спасибо! теперь не ругается :). Еще пару вопросов:1. Почему в SQLite такой запрос срабатывает без ошибки?2. Где-нибудь в мануале это объяснено? Хочется почитать про такие запросы.


bitwise_sql

It is not permissible to refer to a column alias in a WHERE clause, because the column value might not yet be determined when the WHERE clause is executed.


bitwise_sql

miksoft,Еще раз спасибо! :)