在mysql记录中进行AND操作

时间:2014-01-20 10:43:30

标签: mysql operators

我有一组记录,可以在各个记录中返回标记。基于那些标志我想在这些标志内执行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

2 个答案:

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

DEMO TO PLAY WITH