gpt4 book ai didi

mysql - MySql IN 子句的异常结果

转载 作者:行者123 更新时间:2023-11-29 00:30:08 24 4
gpt4 key购买 nike

这是一个非常奇怪的家伙,至少对我来说是这样。

我有一个查询,用于检索过去几个月前几个实体及其相关记录计数的一些统计数据。

一切正常,但不显示 Junes 的结果。查询运行良好,只是不会给出 Junes 结果。

如果我执行以下任一操作,一切就会重新开始:

  1. 将 IN 子句更改为连接,而不是使用返回与 IN 子句使用的列表完全相同的列表的子查询
  2. 将周数添加到组中,根据我的检查,周数应该是不必要的,MonthNumber 已正确解析记录。

但我真的很想找出发生这种情况的原因,而不仅仅是修补查询。在我看来,我的查询应该有效。

SELECT
YEAR(FROM_UNIXTIME(mt.`date_created`)) AS 'Year',
MONTH(FROM_UNIXTIME(mt.`date_created`)) AS 'MonthNumber',
MONTHNAME(FROM_UNIXTIME(mt.`date_created`)) AS 'MonthName',
WEEKOFYEAR(FROM_UNIXTIME(mt.`date_created`) ) AS 'Week',
`at`.`group_name`,
COUNT(`mt`.`mt_id_pk`) AS 'record_count'
FROM
`my_table` AS `mt`
INNER JOIN `another_table` AS `at` ON `mt`.`at_id_fk` = `at`.`at_id_pk`
WHERE `at`.`group_name` IN ('something1','something2','something3')
GROUP BY `at`.`group_name`, `MonthNumber`
HAVING `Year` = YEAR(NOW())
ORDER BY `MonthNumber` DESC

最佳答案

YEAR() 不是聚合函数,不应用于 HAVING 子句,它应该是这样的:

SELECT
YEAR(FROM_UNIXTIME(mt.`date_created`)) AS 'Year',
MONTH(FROM_UNIXTIME(mt.`date_created`)) AS 'MonthNumber',
MONTHNAME(FROM_UNIXTIME(mt.`date_created`)) AS 'MonthName',
WEEKOFYEAR(FROM_UNIXTIME(mt.`date_created`) ) AS 'Week',
`at`.`group_name`,
COUNT(`mt`.`mt_id_pk`) AS 'record_count'
FROM
`my_table` AS `mt`
INNER JOIN `another_table` AS `at` ON `mt`.`at_id_fk` = `at`.`at_id_pk`
WHERE `at`.`group_name` IN ('something1','something2','something3')
AND YEAR(FROM_UNIXTIME(mt.`date_created`)) = YEAR(NOW())
GROUP BY `at`.`group_name`, `MonthNumber`
ORDER BY `MonthNumber` DESC

关于mysql - MySql IN 子句的异常结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16983010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com