gpt4 book ai didi

php - 旧 MySQL 中的错误查询

转载 作者:行者123 更新时间:2023-11-29 06:17:12 27 4
gpt4 key购买 nike

我正在创建对 Count 表的查询。

$Month = $_POST['Month'];
$query = "SELECT ANY_VALUE(AD) AS ad,
COUNT(*) AS `Click`,
DATE_FORMAT(ANY_VALUE(TIME), '%Y-%m') AS `Month`
FROM `clicks`
WHERE DATE_FORMAT(TIME, '%Y-%m')='$Month'
GROUP BY ad ASC ";

它在 MySql 版本中工作是 5.7.10 (Localhost)。然后上传到网络服务器,服务器使用 MySql 版本 5.1.66-cll,但我发现错误:

"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION server_dbname.ANY_VALUE does not exist' in...."

如果我删除 ANY_VALUE,可以在 MySQL 5.1.66 中工作,但不能在 MySQL 5.7.10 中工作如何使 Query 在两个版本(新版本和旧版本)中工作?

非常感谢您的回答。 (对不起,我的英语不好)

最佳答案

MySQL 5.7 中添加了 ANY_VALUE 函数,允许您为单个查询覆盖 ONLY_FULL_GROUP_BY SQL 模式的行为。此模式的默认值在 5.7 中更改为启用,因此您可以修改未列出所有列的旧查询。

如果您删除 ANY_VALUE 并希望它在 5.7 中工作,您有两个选择:

  1. 禁用 ONLY_FULL_GROUP_BY模式,因此它将像早期版本一样运行。
  2. 更改查询,使所有非聚合列都列在 GROUP BY 子句中。
    SELECT ad,
COUNT(*) AS `Click`,
DATE_FORMAT(TIME, '%Y-%m') AS `Month`
FROM `clicks`
WHERE DATE_FORMAT(TIME, '%Y-%m')='$Month'
GROUP BY ad ASC, Month

关于php - 旧 MySQL 中的错误查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192330/

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