Je dois sélectionner la phrase la plus longue qui a http://sqlfiddle.com/#!18/e954f/1/0 p>
Merci d'avance. P> points> 0 code> mais être contenue dans une phrase qui a points = 0 code>, si vous regardez la démo que les rangées en sortie serait numéro 3 et 6: p>
3 Réponses :
Vous pouvez utiliser une join interne comparant les phrases avec un SQL FIDDLE P> EDIT: P> Pour inclure l'autre phrase: P> comme code> pour obtenir uniquement ceux contenus dans une autre phrase. Filtre pour le point dans un où la clause CODE>. Ensuite, obtenez le rang () code> partitionné par la phrase de l'instance jointe et commandé par la longueur décroissante. Dans un externe, sélectionnez cod> obtenez ceux avec un rang d'un.
SELECT x.id,
x.phrase,
x.other_phrase,
x.points
FROM (SELECT w1.id,
w1.phrase,
w2.phrase other_phrase,
w1.points,
rank() OVER (PARTITION BY w2.phrase
ORDER BY len(w1.phrase) DESC) r
FROM words w1
INNER JOIN words w2
ON w2.phrase LIKE concat(w1.phrase, '%')
WHERE w2.points = 0
AND w1.points > 0) x
WHERE x.r = 1;
Je passe tellement de temps à travailler avec MySQL 5.x, j'oublie la plupart des supports SQL Classement CODE>. Merci de me le rappeler.
Merci pour votre bit collant de réponse
J'utilise cette solution s'il manque une colonne de la phrase correspondante avec les 0 points, comment pourrais-je ajouter une telle colonne? Merci pour votre aide SQLFIDDLE.com/#118/24F134/4/0
@ Réfaelo1979: Ajoutez-le simplement à la liste. Voir la modification.
@sticky bit je suis reconnaissant
Vous recevrez de la longueur maximale à min de phrase où et si vous voulez la phrase la plus longue p> points> 0 code>
Vous pouvez utiliser un CTE pour trouver toutes les phrases avec des points positifs qui sont une sous-chaîne d'une phrase avec 0 points. Ensuite, vous pouvez trouver la longueur maximale des substrings associées à chaque phrase 0 point et rejoindre code> qui retourne sur le CTE pour obtenir la phrase qui correspond à cette condition: id phrase points
3 tool box online 1
6 stone road 1
Nick très apprécié
(1) J'ai supprimé les balises de base de données incompatibles. Veuillez baliser uniquement avec la base de données que vous utilisez vraiment. (2) Un violon SQL est vraiment bon - pour augmenter les informations dans une question. Vous devez fournir des échantillons de données et des résultats souhaités dans la question i>.
Êtes-vous sûr qu'il est 3 et 6? La 7ème rangée a plus de caractères et de points que le 6ème.
Tomasz Kasperczyk Oui, mais la ligne 6 est contenue dans une longueur plus longue que la ligne 7, elle a une correspondance plus longue
Vous voulez la phrase la plus longue, mais vous voulez deux enregistrements en sortie. C'est impossible. Comment déterminez-vous des groupes de phrases à comparer avec et d'obtenir la plus longue pour chaque groupe?
Kamil Goscimininski Mon indication sont les rangées avec 0 points, maintenant, je dois trouver la phrase avec des points> 0 avec le plus long match contenu, je sais que je ne m'expliquerais peut-être pas le meilleur.