我的数据库结构如下:
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
答案 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 NULL
和is NOT NULL
替换为<> ''
和= ''
,具体取决于slab_range
是否实际包含NULL或空字符串(基于您的所需的输出似乎包含空字符串)