2017-04-27 33 views
0

MySQL错误这里是我的MySQL查询我本地machine.but它工作正常活

SELECT sum(quantity) as quantity_sold, `gc_order_items`.`name` as `name`, `sku` FROM `gc_orders` JOIN `gc_order_items` ON `gc_order_items`.`order_id` = `gc_orders`.`id` WHERE `status` != 'cart' AND `gc_order_items`.`type` = 'product' GROUP BY `product_id` 

我正在本地服务器上的这个错误。 SELECT列表的

表达#2不GROUP BY子句和包含 非聚集列“go.gc_order_items.name”,这是不 函数依赖于在GROUP BY子句中的列;这是 与sql_mode = only_full_group_by不兼容 请帮忙!

回答

2

这里是你的当前查询:

SELECT 
    SUM(quantity) AS quantity_sold, 
    gc_order_items.name AS name, 
    sku 
FROM gc_orders 
INNER JOIN gc_order_items 
    ON gc_order_items.order_id = gc_orders.id 
WHERE status != 'cart' AND 
     gc_order_items.type = 'product' 
GROUP BY product_id 

在本地计算机最有可能的ONLY_FULL_GROUP_BY模式打开。在这种与ANSI SQL标准一致的模式下,GROUP BY聚合查询中的每一列必须出现在GROUP BY子句出现在聚合函数中,例如, SUM()。在上述查询的情况下,您正在选择skuname列,但它们不出现在GROUP BY中,也不出现在聚合函数内部,因此是错误。

在现场机器上,我的猜测是关闭了严格模式,允许您继续进行查询。

这里是一个猜测,一个版本的查询这将运行正常无处不在:

SELECT 
    t2.quantity_sold, 
    t2.name, 
    t1.sku 
FROM gc_orders t1 
INNER JOIN 
(
    SELECT order_id, name, SUM(quantity) AS quantity_sold 
    FROM gc_order_items 
    WHERE type = 'product' 
    GROUP BY order_id, name 
) t2 
    ON t1.id = t2.order_id 
WHERE t1.status != 'cart' 
相关问题