2017-04-27 34 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' 
相關問題