MySQL错误:sql_mode = only_full_group_by

时间:2016-12-15 12:15:57

标签: mysql

我有这个脚本,我习惯于为动态结果做一个简单的投影

    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

但出了点问题;因为我有这个错误:

  

1055 - SELECT列表的表达式#5不在GROUP BY子句中   包含非聚合列'mutuelle_bi.M.etat_bs',但不是   功能上依赖于GROUP BY子句中的列;这是   与sql_mode = only_full_group_by

不兼容

enter image description here

如何通过解决此问题的方式修改脚本, 鉴于我不应该修改我的sql server的任何配置文件。我应该只编写脚本

任何建议??

2 个答案:

答案 0 :(得分:7)

您还可以尝试停用only_full_group_by设置:

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

为我工作。

答案 1 :(得分:4)

我认为你只想要条件聚合:

SELECT M.nom_utilisateur, 
       SUM(M.montant_bulletin ) as Montant_Total_BS,
       SUM(M.montant_payer) as Montant_Total_payer,
       SUM(M.etat_bs = 'Remboursé') as nbr_bs_total_payer,
       SUM(M.etat_bs = 'Non remboursé') as nbr_bs_non_payer,
       SUM(M.etat_bs = 'En cours') as nbr_bs_en_cours,
       SUM(M.etat_bs = 'Nouveau') as nbr_bs_nouveau
FROM mutuelle_bi.`Mutuelle` M
WHERE M.nom_assurence = 'Star'
GROUP BY M.nom_utilisateur;