Php 仅sql模式完全分组依据
我对Php 仅sql模式完全分组依据,php,sql,Php,Sql,我对sql\u mode=only\u full\u group\u by有问题。这个问题将出现在一些windows计算机上,但其他一些计算机和服务器上,我没有遇到任何相关问题 因此,我通过以下代码获得sql\u mode=only\u full\u group\u错误: $yearMonthTotalyUsers = array(0,0,0,0,0,0,0,0,0,0,0,0); $YearMonthyTotalyUser = mysqli_query($db,"SELECT MONTH(F
sql\u mode=only\u full\u group\u by
有问题。这个问题将出现在一些windows计算机上,但其他一些计算机和服务器上,我没有遇到任何相关问题
因此,我通过以下代码获得sql\u mode=only\u full\u group\u错误:
$yearMonthTotalyUsers = array(0,0,0,0,0,0,0,0,0,0,0,0);
$YearMonthyTotalyUser = mysqli_query($db,"SELECT MONTH(FROM_UNIXTIME(user_registered))+1, count(*)
FROM dot_users
WHERE YEAR(FROM_UNIXTIME(user_registered)) = YEAR(CURDATE())
group by MONTH(FROM_UNIXTIME(user_registered))
ORDER BY MONTH(FROM_UNIXTIME(user_registered))
") or die(mysqli_error($db));
while ($row = mysqli_fetch_array($YearMonthyTotalyUser, MYSQLI_NUM)) {
$yearMonthTotalyUsers[$row[0]] = $row[1];
}
任何人都可以帮助我为什么会遇到这个问题以及如何解决它
以下是完整的错误消息:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'data.dot_users.user_registered' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
您的MySQL版本存在“错误”,它要求SELECT列名/别名/表达式与仅使用sql模式的GROUP BY相同\u FULL\u GROUP\u BY
您可以尝试用传递的表/子查询方法包装它
SELECT
user_registered_month + 1
, `count`
FROM (
SELECT MONTH(FROM_UNIXTIME(user_registered)) AS user_registered_month, count(*) AS `count`
FROM dot_users
WHERE YEAR(FROM_UNIXTIME(user_registered)) = YEAR(CURDATE())
group by MONTH(FROM_UNIXTIME(user_registered))
ORDER BY MONTH(FROM_UNIXTIME(user_registered))
) AS alias
或者,如果数据库支持,这也是可能的,例如MySQL支持这种别名的重用
SELECT
user_registered_month + 1
, `count`
FROM (
SELECT MONTH(FROM_UNIXTIME(user_registered)) AS user_registered_month, count(*) AS `count`
FROM dot_users
WHERE YEAR(FROM_UNIXTIME(user_registered)) = YEAR(CURDATE())
group by user_registered_month
ORDER BY user_registered_month
) AS alias
@ErayBalkanli我在问题中添加了完整的错误消息。我真的很惊讶full group by mode不支持group by
键上的表达式。“我真的很惊讶full group by mode不支持group by键上的表达式。”是的,我也是@GordonLinoff,因为我无法重新编译它。。MySQL seams支持sql模式的表达式,仅支持从MySQL 5.5到MySQL 8的完整分组。。看起来topicstarter MySQL版本有漏洞或者类似的东西。。