使用SQL,如何获取满足多个条件之一的行,并使用额外的布尔列显示满足的确切条件

使用SQL,如何获取满足多个条件之一的行,并使用额外的布尔列显示满足的确切条件,sql,relational-database,Sql,Relational Database,我想查询一个表,查找满足多个条件中任何一个条件的情况 ... WHERE cond1 OR cond2 OR cond3 但我需要确切地知道哪些条件得到了满足 我想要这样的东西 +-----+- -+-------+-------+-------+ | ID | .. selected columns .. | cond1 | cond2 | cond3 | +-----+- -+-------+------

我想查询一个表,查找满足多个条件中任何一个条件的情况

... WHERE cond1 OR cond2 OR cond3
但我需要确切地知道哪些条件得到了满足

我想要这样的东西

+-----+-                      -+-------+-------+-------+
| ID  | .. selected columns .. | cond1 | cond2 | cond3 |
+-----+-                      -+-------+-------+-------+
| id1 |                        | true  | false | false |
| id2 |                        | false | true  | true  |
| id3 |                        | false | true  | false |
| id4 |                        | true  | true  | false |
+-----+-                      -+-------+-------+-------+

有什么办法吗?

只需在选择列表中输入相同的条件:

select id, cond1, cond2, cond3
from tablename
where cond1 or cond2 or cond3
使用ANSI SQL功能T031,布尔数据类型

或者,用例表达式:

select id,
       case when cond1 then 'true' else 'false' end,
       case when cond2 then 'true' else 'false' end,
       case when cond3 then 'true' else 'false' end
from tablename
where cond1 or cond2 or cond3
核心ANSI SQL。

您可以简单地使用CASE。我准备了一个样品,你可以检查一下:

--DROP TABLE TmpTable
--GO
CREATE TABLE TmpTable
(
    ID INT
    ,   Column1 VARCHAR(100)
    ,   Column2 VARCHAR(100)
    ,   Column3 VARCHAR(100)
    ,   Column4 VARCHAR(100)
);

INSERT INTO TmpTable 
VALUES  
 (1,'AA','B','C','D')
,(2,'BB','A','C','B')
,(3,'CC','E','F','G')
,(4,'DD','F','G','H')
,(5,'EE','A','G','D');


SELECT   Id
        ,Column1
        ,Column2
        ,Column3
        ,Column4
        ,CASE WHEN Column2='G' THEN 'True' ELSE 'False' END Cond1Check
        ,CASE WHEN Column3='G' THEN 'True' ELSE 'False' END Cond2Check
        ,CASE WHEN Column4='G' THEN 'True' ELSE 'False' END Cond3Check

FROM TmpTable
WHERE (
               Column2='G' 
            OR Column3='G' 
            OR Column4='G'
       )

选择列表中的用例表达式或布尔表达式。您使用的是哪种dbms?“您的dbms支持吗,选择列表中的Column2='G'Cond1检查?”?