MySQL - 如果特定列具有值,则忽略'WHERE'子句

时间:2015-07-22 22:21:37

标签: mysql

我有很长的查询,我加入了我的主表,其中一个表基本上包含一个计划/包。但是,购买计划表中的一个选项是“位置”。如果位置为空,则基本上意味着“任何国家/地区”。

现在,如果计划包中的位置(与主表连接)为null,我仍然想要选择该行。但是,如果它不是null,我希望它是一个不同的特定值(例如'US'),基本上确保如果location为null,则不包括where子句。

希望足够清楚,并希望得到任何帮助。

2 个答案:

答案 0 :(得分:3)

只需在WHERE子句中添加空条件:

WHERE Location = 'US'
    OR Location IS NULL

答案 1 :(得分:0)

您可以在WHERE子句中使用CASE WHEN:

 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,它始终为true。

我希望我理解你真正想要的东西。