Php SELECT列表不在GROUP BY子句中错误MySQL

Php SELECT列表不在GROUP BY子句中错误MySQL,php,mysql,mysql-error-1055,Php,Mysql,Mysql Error 1055,我只是MySQL命令的初学者。我搜索了这个错误,但是他们的问题和我的不一样。我很难理解这个错误,它说SELECT list不在groupby子句中,并且包含未聚合的列“jaforms.p.item_price”,它在功能上不依赖于groupby子句中的列;这与sql\u mode=only\u full\u group\u by不兼容 我也搜索了功能相关的的含义,但仍然无法理解 我的问题是: SELECT sum(od.item_qty) as item_qty, p.item_name

我只是MySQL命令的初学者。我搜索了这个错误,但是他们的问题和我的不一样。我很难理解这个错误,它说
SELECT list不在groupby子句中,并且包含未聚合的列“jaforms.p.item_price”,它在功能上不依赖于groupby子句中的列;这与sql\u mode=only\u full\u group\u by不兼容

我也搜索了功能相关的
的含义,但仍然无法理解

我的问题是:

SELECT
  sum(od.item_qty) as item_qty,
  p.item_name as item_name,
  p.item_price as item_price, 
  od.size as size
from order_details as od, productmaster as p
where p.id = od.item_id 
group by p.item_name

如果我从查询中删除
p.item\u price
od.size
,它将接受
p.item\u名称
。我想知道为什么,因为
p.item\u name
p.item\u price
在同一个表中。

您需要在分组方式中提及所有列,而不是聚合函数:

SELECT
  SUM(od.item_qty) AS item_qty,
  p.item_name AS item_name,
  p.item_price AS item_price, 
  od.size AS size
FROM order_details AS od, 
JOIN productmaster AS p ON p.id = od.item_id 
GROUP BY p.item_name, p.item_price, od.size
在本例中,SUM()是这样一个函数,如MAX、MIN、COUNT等


(并更改为明确的书面连接)

您可以尝试类似的方法。使用GROUP BY时,应指定哪些列是“分组依据”,哪些列是通过函数聚合的(例如SUM、AVG、MIN、MAX、COUNT等)


您希望显示哪种商品的价格和尺寸?您的查询意味着您需要每个项目的数量总和。那么,谈论单一大小是没有意义的,您需要从聚合的角度来考虑。另请注意,您已经应用了
交叉连接
,将
从order\u details设置为od,productmaster设置为p
谢谢!这解决了我的问题。这是否意味着,如果查询未聚合的列,则必须按函数将其包含在分组中?是的,所有列。在这种情况下,考虑如果不按大小分组会发生什么。它将合计所有数量。但您希望看到哪种尺码的?L还是XL码?或者甚至是XXXL?这个查询实际上是针对购物车的。因此,每个项目都有自己的大小。我只是想过滤掉重复的项目。与多次显示同一项不同,我将只显示单个项并使用SUM()函数。我还需要添加一个条件来过滤相同的项目,但大小不同。但我现在非常感谢你。
SELECT
  p.item_name as item_name,
  AVG(p.item_price) as item_price, 
  od.size as size,
  SUM(od.item_qty) as item_qty
from order_details as od
INNER JOIN productmaster as p ON p.id=od.item_id
group by p.item_name, od.size