多在sql查询中的条件

时间:2015-11-28 06:30:32

标签: php mysql

我的数据库结构如下:

tender_id | slab_range | slab_checked | item_name
________________________________________________
1           2-3            Yes           Item1
1           2-7            No            Item2
1           2-9            Yes           Item 3
2                          No            Item4
2                          NULL          Item5

我需要在查询中检查条件

的多个位置

第一个条件是仅当slab_range值存在时显示记录(非空),如果slab_range值存在则那么它应该只显示带有Slab_checked =是的记录

下一个条件是slab_range = NULL然后它应该显示slab_checked = No或Null的所有记录

这是我需要根据上述内容进行更改的基本查询:

select tender_id, slab_range, slab_checked,item_name 
from quotation_items 
where tender_id='$tender_id' 
and (slab_range=!NULL or slab_checked='Yes' or slab_checked='') 
or  (slab_checked='No' or slab_checked='') 
order by item_name

预期结果

预期结果

tender_id | slab_range | slab_checked | item_name
________________________________________________
1           2-3            Yes           Item1
1           2-9            Yes           Item 3
2                          No            Item4
2                          NULL          Item5

1 个答案:

答案 0 :(得分:1)

select tender_id, slab_range, slab_checked,item_name 
from quotation_items 
where tender_id='$tender_id' 
and (
    (slab_range is not NULL and (slab_checked='Yes')) 
       or  
    (slab_range is NULL and (slab_checked='No' or slab_checked is NULL))
)
order by item_name

您可能需要将is NULLis NOT NULL替换为<> ''= '',具体取决于slab_range是否实际包含NULL或空字符串(基于您的所需的输出似乎包含空字符串)