2014-02-15 2 views
0

как я могу написать следующий SQLкак написать правильно, если СЛУЧАЙ в MySQL, где условие

select * from blogimage where blog_id = '1' and orientation = 'h' 

НО ... Я хочу добавить ....

IF(and only if) orientation = 'h' is null... then use orientation = 'v' 
+0

'orient = 'h' is null' - это синтаксическая ошибка. Вы имеете в виду что-то вроде 'SELECT IF (ориентация IS NULL, 'v', 'h')'? –

+0

нет, я хочу получить ориентацию = 'h' ... но в случае, когда результата нет с ориентацией 'h' .... Вместо этого я возьму ориентацию = 'v'. – user3011784

ответ

0

Если вы только хочет получить 1 запись, которая работает с ориентацией привилегированной = «Н»

SELECT * FROM blogimage 
WHERE blog_id = '1' AND (orientation = 'h' OR orientation = 'v') 
ORDER BY orientation ASC LIMIT 1 
+0

, но я хочу расставить приоритеты ориентации = 'h' над ориентацией 'v' ... поэтому blog_id = 1 имеет как h, так и v изображения ... Я хочу только h. – user3011784

+0

, и если у blog_id нет изображения «h» ... тогда и только тогда я буду использовать «v» – user3011784

+0

Я только что обновил свой ответ. Я думаю, решает, что вам нужно в простой форме. –

0

Это утверждение имеет действительное Case заявления. Однако, если вы имеете в виду, что вам нужен оператор if exists, я думаю, вам нужно использовать хранимую процедуру для них. Это то, что вы пытаетесь создать?

С помощью этого утверждения вы вернетесь к одной строке. Если есть строка h, вы ее получите. Если нет, вы вернете строку v, если это не существует.

select * from blogimage where blog_id = '1' and (orientation = 'h' Or orientation = 'v') Order By Case When orientation = 'h' Then 0 Else 1 End Asc Limit 1 
Смежные вопросы