我的查询有两个条件,如果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%')
答案 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条记录。
希望这有帮助。