我在where中有多个OR的查询。
我遇到的问题是在结果中标记行,以便我知道每个结果的来源。
例如:
select * from people where age>10 or weight>100 or status in ('active','paying','dead')
因此,这将返回一个人员列表。
当在结果中迭代该人员列表时,我需要知道为什么特定的人在结果集中
因此,如果我可以用一个理由“标记”或“标记”每个结果,我可以做类似的事情:
if (person.reason=="age") then do something...
和
if (person.reason=="active") then do something else...
迭代结果时,我不想再次从查询中复制逻辑(查询是动态构建的,可能会非常复杂)。
这可能吗?
(顺便说一句,我在PHP中使用Doctrine进行此操作)
答案 0 :(得分:2)
您可以使用CASE-logic返回包含其中原因的列。
像这样:
select
CASE
WHEN age>10 THEN 'age'
WHEN weight>100 THEN 'weight'
ELSE 'status'
END CASE
,*
from people where age>10 or weight>100 or status in ('active','paying','dead')
我习惯于MSSQL,但语法几乎相同。查看此页面以供参考: http://dev.mysql.com/doc/refman/5.0/en/case.html