我有一组记录,可以在各个记录中返回标记。基于那些标志我想在这些标志内执行and
操作(例如,如果任何单个标志为“true”,则最终结果应该返回“true”)
以下是普通SQL查询返回的记录集;
select ID,flag from tablename;
--------------------------
ID(int) | flag (varchar(5))
--------------------------
1 | true
2 | false
3 | true
4 | false
5 | false
我想知道返回结果的SQL查询,如下所示(这样的方式,最终结果应该是and
在这5条记录中的每一条中的操作)
-------
flag
-------
true
答案 0 :(得分:1)
我不确定我是否完全理解你想要做什么,但是如果你想将你的AND
操作定义为“至少有一条记录的标志值必须为'true'”,那么你可以使用以下SQL语句,如果至少有一个'true'值将返回1,否则将返回0:
SELECT IF(COUNT(*)> 0,'true','false') 从表1 WHERE flag ='true';
请参阅SQL小提琴:http://sqlfiddle.com/#!2/1e6cd7/11
答案 1 :(得分:0)
我提出了这个解决方案,但也许你会得到一个简短而且更好的一个:)。
select if(count(*) = 1 , 'mixed' , flag) flag from(
select flag from table1
where flag = 'true'
having count(*) = 5
union
select flag from table1
where flag = 'false'
having count(*) = 5
union
select 'mixed' from table1
)t