MySQL拥有if
我在使用MySQL查询时遇到问题。如果标签是“5”,那么我只想要当天超过10行的记录,但其他标签的行数不限。在查询中实现这一点的最佳方法是什么MySQL拥有if,mysql,sql,having,having-clause,Mysql,Sql,Having,Having Clause,我在使用MySQL查询时遇到问题。如果标签是“5”,那么我只想要当天超过10行的记录,但其他标签的行数不限。在查询中实现这一点的最佳方法是什么 SELECT id,name,label,date FROM items GROUP BY DATE('date'), label HAVING COUNT(id) > 10 IF label = 5 如果我正确理解了你的问题,这个查询将为你提供你所需要的 只有当“日期”列的定义必须是日期类型时,此查询才能工作,否则除非您强制转换“日期”列,否则
SELECT id,name,label,date
FROM items
GROUP BY DATE('date'), label
HAVING COUNT(id) > 10 IF label = 5
如果我正确理解了你的问题,这个查询将为你提供你所需要的 只有当“日期”列的定义必须是日期类型时,此查询才能工作,否则除非您强制转换“日期”列,否则它将不工作 这个问题令人困惑。根据你的评论,试试这个
SELECTs.total, i.* FROM
items AS i
LEFT JOIN (
SELECT label, COUNT(id) AS total
FROM items
WHERE label = 5 AND date = CURDATE()
GROUP BY label
HAVING COUNT(id) > 10
) AS s ON s.label = i.label
WHERE date = CURDATE()
如果我正确理解了你的问题,这个查询将为你提供你所需要的 只有当“日期”列的定义必须是日期类型时,此查询才能工作,否则除非您强制转换“日期”列,否则它将不工作 这个问题令人困惑。根据你的评论,试试这个
SELECTs.total, i.* FROM
items AS i
LEFT JOIN (
SELECT label, COUNT(id) AS total
FROM items
WHERE label = 5 AND date = CURDATE()
GROUP BY label
HAVING COUNT(id) > 10
) AS s ON s.label = i.label
WHERE date = CURDATE()
这将为不在GROUP BY中的列返回不确定的值
这将为不在GROUP BY中的列返回不确定的值。我将在单个查询中执行此操作:
SELECT id, name, label, date
FROM items
WHERE date >= date(now()) and date < date(now()) + interval 1 day
GROUP BY label
HAVING (label <> 5) or (COUNT(id) > 10);
选择id、名称、标签、日期
从项目
其中日期>=日期(现在())和日期<日期(现在())+间隔1天
按标签分组
具有(标签5)或(计数(id)>10);
这似乎是最简单的方法。我将在一个查询中执行此操作:
SELECT id, name, label, date
FROM items
WHERE date >= date(now()) and date < date(now()) + interval 1 day
GROUP BY label
HAVING (label <> 5) or (COUNT(id) > 10);
选择id、名称、标签、日期
从项目
其中日期>=日期(现在())和日期<日期(现在())+间隔1天
按标签分组
具有(标签5)或(计数(id)>10);
这似乎是最简单的方法。但这会将结果限制为标签为5的项目,对吗?我想要标签的所有记录,但当标签为5时,只有那些行数超过10的记录。请再次检查我的答案,但这会将结果限制为标签为5的项目,对吗?我想要标签的所有记录,但当标签为5时,只有那些行的计数超过10的记录。请再次检查我的答案。是否可以执行
have(count(id)>10且标签=5)或(label!=5)
?是否可以执行have(count(id)>10且标签=5)或(label!=5)
?