2012-12-14 40 views
1
SELECT xp.productid, xp.product, xc.classid, xiW.date, xco.optionid, xco.option_name, xiW.id, xiW.image_path, xiW.path_on_server 
    FROM xcart_products xp 
    INNER JOIN xcart_variants xv ON xp.productid = xv.productid 
    INNER JOIN xcart_variant_items xvi ON xv.variantid = xvi.variantid 
    INNER JOIN xcart_class_options xco ON xvi.optionid = xco.optionid 
    INNER JOIN xcart_classes xc ON xco.classid = xc.classid AND xc.class = 'COLOR' 
    LEFT JOIN xcart_images_W xiW ON xiW.id = xvi.variantid 
    GROUP BY xco.optionid 
    ORDER by xp.product ASC 

我得到的錯誤,說明工作原理:xp.productid是不是在GROUP BY查詢不再在MySQL 5

然後我再補充一點,讓xp.product沒有在GROUP BY

我再補充一點,讓xc.classid是不是在GROUP BY

我再補充一點,去一路下跌太 -

SELECT xp.productid, xp.product, xc.classid, xiW.date, xco.optionid, xco.option_name, xiW.id, xiW.image_path, xiW.path_on_server 
    FROM xcart_products xp 
    INNER JOIN xcart_variants xv ON xp.productid = xv.productid 
    INNER JOIN xcart_variant_items xvi ON xv.variantid = xvi.variantid 
    INNER JOIN xcart_class_options xco ON xvi.optionid = xco.optionid 
    INNER JOIN xcart_classes xc ON xco.classid = xc.classid AND xc.class = 'COLOR' 
    LEFT JOIN xcart_images_W xiW ON xiW.id = xvi.variantid 
    GROUP BY xco.optionid, xp.productid, xp.product, xc.classid, xiW.date, xco.option_name, xiW.id, xiW.image_path, xiW.path_on_server 
    ORDER by xp.product ASC 

這不可能是正確的 是嗎?它確實運行,但我認爲GROUP BY在MySQL 5中的處理方式與4中的處理方式有所不同,或者我的查詢在四個中可能幾乎沒有功能?

+1

SQL標準要求所有的非聚集領域納入'GROUP BY'條款。也許MySQL最終決定做對嗎? – nidu

+0

如果你像這樣分組,並且不知道究竟發生了什麼,那麼你將主要支持你的結果。如果沒有聚合,你爲什麼分組? – Hituptony

回答

2

顯然已啓用ONLY_FULL_GROUP_BY模式

只是禁用它,你可以重新快樂起來與這個偉大的MySQL擴展到GROUP_BY