Вложенные запросы

eXtreme

Новичок
Вложенные запросы

Пытаюсь выполнить запрос:
SELECT Message_ID FROM Message38 WHERE Priority < (SELECT Priority FROM Message38 WHERE Message_ID=4)

В результате ошибка синтаксиса :(
Думаю смысел ясен, что надо получить. На сервере стоит MySQL 4.1
 

zerkms

TDD infected
Команда форума
срочно читать про INNER JOIN либо выполнять 2 запроса
 

voituk

прозревший
Ты пытаешься сравнить число с множеством.
Как ты себе представляешь такую операцию?
 

eXtreme

Новичок
Упс, извиняюсь! На срвере стоит MySQL 4.0.27Соответственно вложенные запросы не поддерживаются :-( Прошляпил...Тогда как переписать это выражение, чтобы оно работало на данной версии?К сожалению я не силён во всяческих объединения типа UNION, INNER JOIN и т.д.
 

zerkms

TDD infected
Команда форума
voituk
где ты там увидел множество?

eXtreme
самое время пробелы в знаниях устранить
dev.mysql.com/doc/refman/4.1/en/join.html
 

voituk

прозревший
Насколько я понимаю, результат запроса
(SELECT Priority FROM Message38 WHERE Message_ID=4)
это множество строк из одного поля содержащее одну строку.

Или же я ошибаюсь и MySQL его преобразует в скаляр?
 

zerkms

TDD infected
Команда форума
voituk
а если представить что Message_ID - primary key или просто например уникальное поле? :)
 

Wicked

Новичок
еще есть такие замечательные вещи как ALL и ANY.

хотя тут действительно достаточно join'а.
 

voituk

прозревший
а если представить что Message_ID - primary key или просто например уникальное поле?
так собс-но и представлялось, иначе изначальный вопрос не имеет смысла.
Но результат этого запроса - не число, а result-set с одним полем и одной строкой.
И без дополнительно (и, что радует, однозначного) преобразования этого result-set в скалярное число оператор ">" смысла не имеет.

P.S. Проверил только что на MySQL 4.1 - работает. Значит MySQL такое преобразование все-таки выполняет. Чтож, оно и к лучшему...
 
Сверху