sql/mysql filtre comprenant uniquement la valeur max
J'ai un jeu de résultats qui est comme ceci:
ID | name | myvalue
1 | A1 | 22
2 | A2 | 22
3 | A3 | 21
4 | A4 | 33
5 | A5 | 33
6 | A6 | 10
7 | A7 | 10
8 | A8 | 10
9 | A9 | 5
ce que je veux, est à inclure uniquement les lignes contenant le plus de "mavaleur" disponibles (dans l'exemple précédent est de 33), puis:
ID | name | myvalue
4 | A4 | 33
5 | A5 | 33
C'est à dire la requête doit ramasser le plus de "mavaleur" disponible (c'est à dire 33) et il faut supprimer les lignes qui ont mavaleur < 33
SELECT ..... WHERE myvalue = THE_HIGHEST_OF(myvalue)
En espérant avoir été clair...
je vous remercie à l'avance
edit:
ma requête actuelle est
SELECT
*,
(very long code that returns a integer as relevance score) AS myvalue
FROM
mytable
HAVING
myvalue = ?????
ORDER BY
myvalue DESC
maintenant, le plus haut mavaleur peut être de 10, 20, 30, n'importe quel nombre... dans le dernier jeu de résultats je veux inclure uniquement les lignes qui ont le plus de pertinence possible de score
j'ai essayé en utilisant le GROUPE, mais j'ai toujours besoin de répéter les...
(very long code that returns a integer as relevance score) AS myvalue
...deux fois
Ce que vous voulez exactement? (voulez répéter
myvalue
deux fois ou une fois?)édité principale la réponse!
Vous pouvez pas sélectionner
MAX
à partir de votre code très long...?je ne pense pas, mais je ne sais pas, comment je doit utiliser group by?
OriginalL'auteur skyline26 | 2012-09-04
Vous devez vous connecter pour publier un commentaire.
Voir ce SQLFiddle
Edit:
Comme par discussion avec l'OP.
L'OP veut utiliser alias dans
WHERE
clause. Mais vous ne pouvez utiliser les alias de colonne dansGROUP BY
,ORDER BY
, ouHAVING
clauses.Regardez cette réponse.
OriginalL'auteur hims056
essayer cela,
SQLFiddle Démo
grâce à hims056 pour le DDL
aïe!, mavaleur est, en fait, une note de pertinence dans une recherche fulltext, que je ne veux pas répéter deux fois... peut-être qu'il est possible à l'aide de certains fonction personnalisée? btw merci à vous tous, +1 pour every1
OriginalL'auteur John Woo
(si vous utilisez le code commenté, obtenez le maximum par nom 🙂 )
OriginalL'auteur Florin Ghita
OriginalL'auteur Vaci
une autre façon est :
OriginalL'auteur Grisha Weintraub