我有这个 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
。
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
。