tôi có kịch bản này, nơi tôi đang sử dụng để làm một dự báo đơn giản cho một kết quả độnglỗi MySQL: sql_mode = only_full_group_by
SELECT
M.nom_utilisateur,
SUM(M.montant_bulletin) as Montant_Total_BS,
SUM(M.montant_payer ) as Montant_Total_payer,
COUNT(M.ref_bs) as nbr_bs_total,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "Remboursé")) as nbr_bs_total_payer,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "Non remboursé")) as nbr_bs_non_payer,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "En cours")) as nbr_bs_en_cours,
(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur AND (M.nom_assurence = "Star" AND M.etat_bs = "Nouveau")) as nbr_bs_nouveau
FROM mutuelle_bi.`Mutuelle` M
WHERE M.nom_assurence = "Star"
GROUP BY M.nom_utilisateur
nhưng họ gặp khó khăn; như tôi có lỗi này:
1055 - Biểu hiện # 5 trong danh sách SELECT không có trong mệnh đề GROUP BY và chứa nonaggregated cột 'mutuelle_bi.M.etat_bs' mà không phải là chức năng phụ thuộc vào các cột trong mệnh đề GROUP BY ; đây là không tương thích với sql_mode = only_full_group_by
Làm thế nào tôi có thể sửa đổi kịch bản của tôi bằng cách này để giải quyết vấn đề này, cho rằng tôi không nên thay đổi bất kỳ tập tin cấu hình của máy chủ sql của tôi . và tôi chỉ nên viết các tập lệnh
Bất kỳ đề xuất nào ??
Bạn phải sử dụng tính có điều kiện thay vì truy vấn phụ. – Shadow
Nó không phải là hoàn toàn rõ ràng cho dù bạn wan để giữ 'only_full_group_by', mà có thể được thay đổi chỉ cho phiên hiện tại nhưng tất nhiên là một tính năng để giúp ngăn chặn bộ kết quả không có thật. –
Bạn có thể đơn giản sử dụng hàm 'ANY_VALUE()' trong cột không được phân tách. Xem: http://stackoverflow.com/a/40578865/439171 –