2015-07-22 4 views
0

У меня довольно длинный запрос, и я присоединяюсь к своей основной таблице со своей таблицей, которая в основном содержит план/пакет. Однако одним из вариантов в таблице плана покупки является Location. Если местоположение пустое, это в основном означает «любая страна».MySQL - Игнорирует предложение WHERE, если конкретный столбец имеет значение

Теперь, если местоположение в плане плана (которое соединено с первичной таблицей) равно null, я все же хочу выбрать эту строку. Если он не является нулевым, я хочу, чтобы он был другим конкретным значением (например, «США»), в основном гарантируя, что если местоположение равно null, то место, где предложение не включено, не содержит.

Надеюсь, что это было достаточно ясно, и был бы признателен за любую помощь.

ответ

3

Просто добавить нулевое состояние в вашей статье WHERE:

WHERE Location = 'US' 
    OR Location IS NULL 
+0

Это ... невероятно просто и работает. Не знаю, почему я об этом не думал. –

0

Вы можете использовать случай, когда в ИНЕКЕ:

Select * from tbl1 join tbl2 on tbl1.key = tbl2.key 
where tbl1.location = CASE when tbl2.location 
IS NOT NULL tbl2.location ELSE tbl1.location END 

Таким образом, если место в таблице 2 не пусто , он будет проверять местоположение в таблице 1, в противном случае он установит tbl1.location = tbl1.location, что всегда верно.

Надеюсь, я понял, чего вы действительно хотели.

Смежные вопросы