0

我在 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...


在迭代结果时,我不想再次从查询中复制逻辑(查询是动态构建的,可能会变得非常复杂)。

这可能吗?
(顺便说一句,我正在使用 Doctrine 在 PHP 中执行此操作)

4

1 回答 1

2

您可以使用 CASE 逻辑返回包含原因的列。

像这样:

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

于 2013-10-18T13:33:49.043 回答