我有这个 sql_mode=only_full_group_by 限制,我没有服务器的全局权限,因为我使用的是共享主机

i got this sql_mode=only_full_group_by restriction and I dont have global right to the server because am using shared hosting

SELECT * FROM raw_stock WHERE date='2002-09-23' group by token ORDER BY time

然后我得到了这个:

SELECT 列表不在 GROUP BY 子句中并且包含非聚合列 'db.table.table_id',它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by

不兼容

我在这里看到了答案:

但前提是您不在拥有全局权限的共享主机上

这个问题可能看起来像是重复,但事实并非如此,如果您拥有专用的 VPS 服务器,您可以禁用 ONLY_FULL_GROUP_BY...但是当您将应用程序托管在共享上时托管情况就不一样了。如果您尝试禁用 ONLY_FULL_GROUP_BY,它会告诉您,您没有这样做的管理员权限...如果有误,请纠正我

您需要 select 按列名排列所有列并将它们也应用到 group by 子句中,除此之外,这会产生错误,因为 group by 仅用于聚合,尽管从您的问题来看是不清楚为什么您需要在查询中分组

SELECT column1,column2, column3,... FROM raw_stock WHERE date='2002-09-23' group by column1,column2, column3,... ORDER BY time

您可以在 运行 时更改 sql_mode。 这是它在 运行 时间

应该如何工作
// connect to mysql and call the first query
mysqli_query("SET SESSION sql_mode = 'TRADITIONAL'");

mysqli_query($conn, "SET SESSION sql_mode = 'TRADITIONAL'");

如果 mysqli_query 不起作用,也尝试 mysql_query