MySql选择IF确定应该实现的条件

时间:2015-02-17 16:49:54

标签: mysql

我的查询有两个条件,如果count(a.id)大于1,那么where条件是DAYS LIKE'%2%'或者DAYS LIKE'%6%'。但我不知道如何执行此操作。我已经尝试了下面的查询,但它错了。

任何人都可以帮助我吗?感谢。

聚苯乙烯。抱歉我的英文。

SET @time = '20:59:59';

SELECT *
FROM `msshift` a
WHERE IF(
        a.`TIMEFROM` < a.`TIMETO`,
        CAST(@time AS TIME) BETWEEN a.`TIMEFROM` AND a.`TIMETO`,
        (CAST(@time AS TIME) BETWEEN CAST('00:00:00' AS TIME) AND a.`TIMETO`) OR 
        (CAST(@time AS TIME) BETWEEN a.`TIMEFROM` AND CAST('24:00:00' AS TIME))
    ) = 1 AND PLANT = '1011' AND IF(COUNT(a.ID) > 1, a.DAYS LIKE '%2%', a.DAYS LIKE '%6%')

1 个答案:

答案 0 :(得分:0)

您不能在where子句中使用聚合函数。这就是&#39;子句是专为。

设计的

如果没有看到结构并知道你的目标是什么,我就无法告诉具体的查询是什么,但这里就是一个例子。

表:foo id:INT foreign_id:INT 名称:CHAR

SELECT count(*) as grouped_count from foo
GROUP BY foreign_id
HAVING grouped_count > 5

这将返回属于外表的每组记录,该记录在其组中有超过5条记录。

希望这有帮助。