在SQL中标记结果

时间:2013-10-18 13:27:13

标签: php mysql sql doctrine-orm

我在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进行此操作)

1 个答案:

答案 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