условный запрос mysql - сложный

Я хочу получить разные значения для поля, скажем: field1... Для этого нужен запрос типа: «выбрать отличное (поле1) из таблицы»

Однако для некоторых записей поле1 пусто, и есть другой столбец, который является альтернативой полю1, а именно поле2. Для записей, где поле1 пусто, мне нужно использовать значение поля2. Я думаю, мне нужен своего рода оператор условного выбора с управлением if, например:

 select distinct( (if(field1!='') field1 else field2) ) from table

Я понятия не имею, как это написать. Любая помощь приветствуется...


person emre    schedule 31.05.2010    source источник
comment
может не так уж и сложно :)   -  person emre    schedule 31.05.2010


Ответы (3)


SELECT DISTINCT (
 IF( coalesce(field1,'') <> '', field1, field2)
)
FROM table

Это будет работать как для нулевого, так и для пустого field1.

person ceteras    schedule 31.05.2010

SELECT DISTINCT IFNULL (поле1, поле2) из ​​таблицы

должен сделать трюк.

person Peter Tillemans    schedule 31.05.2010
comment
ваше решение вернуло 64 результата, а мой запрос ниже вернул 74!?! Я анализирую результаты, чтобы увидеть различия, и позже опубликую здесь свои комментарии. - person emre; 31.05.2010

я думаю, что сделал это (не уверен, что результат правильный):

SELECT DISTINCT (
 IF( field1 <> '', field1, field2)
)
FROM table
person emre    schedule 31.05.2010
comment
Значение NULL и пустая строка не совпадают. Может быть, это объясняет разницу? - person Peter Tillemans; 31.05.2010