bonjour,
j'ai deux questions :
1ere question:
mes cours de sql datent de plus de 20ans et je viens de découvrir une chose qui m'interpelle au sujet du GROUP BY.
Depuis 20ans, on me disait (ou j'avais compris que) que ce qui est listé dans le GROUPBY doit obligatoirement être dans le SELECT
ainsi cela esrt correct :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select a,b,c,sum(d) from t group by a,b,c
et je pensais cela pas correct:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select c,sum(d) from t group by a,b,c
a et B ne sont pas dans le SELECT !!
En cherchant comment adapter une requête postgresql avec DISTINCT ON pour mysql (car le DISTINCT ON) existe pas avec Mysql, je viens de découvrir qu'on peut mettre des choses dans le group BY qui ne sont pas dans le select !
est-ce récent ou est-ce que j'avais mal compris depuis 20ans ?
2eme question (equivalent FIRST() de pg en mysql :
je cherchais un équivalent mysql du FIRST mais pour mysql. on m'a suggérer ceci :
que pgsql :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select first (b),first(c),sum(d) from t group by a,b,c
devient en mysql:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select b,c,sum(d) from t group by a,b,c
et à ma grande surprise, ça fonctionne dans mysql !
du coup, je tombe des nuts !
j'aurai pensé que je devais faire :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select min(a),min(b),min(c),sum(d) from t group by a,b,c
alors qu'est-ce qui est mieux ? plus rapide ou plus correct ?








Répondre avec citation
Partager