2013-08-30 2 views
2

Я пытаюсь получить наибольшую отдачу от этой части запроса:использовать БОЛЬШОЙ в MySQL, когда нулевые значения

greatest((follette_title.usedbuying_price *1.37) or 
     (amtext.price*1.37) or 
     (nebraska.price *1.2) or 
     (tichenor.price *1.25)) 

Моего вопроса есть нулевые значения в таблицах, так это только возвращает нулевое значение , Как мне обойти это без выполнения обновления во всех таблицах, чтобы изменить нулевые значения на 0?

ответ

2

Используйте COALESCE функцию

EG:

greatest(
    COALESCE((follette_title.usedbuying_price *1.37), 0), 
    COALESCE((amtext.price*1.37), 0), 
    COALESCE((nebraska.price *1.2), 0), 
    COALESCE((tichenor.price *1.25), 0) 
    ) 
+0

Мне нужно найти наибольшее значение всех 4-х цен, а не только один. – Jim

+2

, тогда сделайте coalesce вокруг каждого –

+0

Это работает для одной записи, но нет, если у меня есть 200 записей, мне нужно это сделать, что еще я могу попробовать ??? – Jim

1

Я предполагаю, что вы имеете в виду:

greatest((follette_title.usedbuying_price *1.37), 
     (amtext.price*1.37), 
     (nebraska.price *1.2), 
     (tichenor.price *1.25) 
     ) 

or не имеет особого смысла в этом контексте.

Если предположить, что все цены больше, чем 0, вы можете конвертировать их в 0, если NULL:

greatest(coalesce((follette_title.usedbuying_price *1.37, 0), 
     coalesce((amtext.price*1.37, 0), 
     coalesce((nebraska.price *1.2, 0), 
     coalesce(tichenor.price *1.25, 0) 
     ) 
Смежные вопросы