J'ai vu une solution similaire sur ce site, mais elle n'est pas utilisable dans une vue en raison de limitations d'utilisation variable:
Séquence de génération de chaque groupe dans MySQL P>
une table indique un 1000 mots donc ici va: p>
J'ai ceci sur Une table: p> Je le veux dans une vue: p> Aide! P> Si correspondant, j'utilise MySQL Workbench sur Windows 10. P> P>
3 Réponses :
Si vous exécutez MySQL 8.0, utilisez simplement si vous exécutez une version antérieure et em> vous Impossible d'utiliser des variables, une option est une sous-requête corrélée (bien que cela soit beaucoup moins efficace que les fonctions ou variables de fenêtre): p> Notez que l'utilisation de cette technique, les cravates obtiendraient Le même row_number () code>:
SEQ code> - donc cela se comporte effectivement comme la fonction de fenêtre
Rank () code> plutôt que
Row_Number () code>. P> P>
Si vous utilisez une version plus ancienne de MySQL, vous pouvez utiliser une sous-requête corrélée pour générer la séquence: si vous sont em> à l'aide de MySQL 8+ , alors utilisez rangée_number code>: p>
Travaillé comme un charme! Merci à tous!
Les deux réponses fonctionnent, mais est plus précise. Cela montre exactement est demandé dans la question. La requête de style plus ancienne effectue le même travail, mais si plusieurs clauses sont placées dans la requête, le résultat est identique à sa demande ou nous nous attendons. P> J'ai testé cette logique à l'aide de cette longue requête compliquée: p> SELECT
ROW_NUMBER() OVER (PARTITION BY Test_Centre ORDER BY Appliction_ID) Sr,
Appliction_ID,
Name_of_Applicant,
Domicile, Gender,
CONCAT(LEFT(CNIC, 5),'-',SUBSTRING(CNIC, 6, 7),'-',RIGHT(CNIC, 1)) AS CNIC,
DATE_FORMAT(Date_of_Birth, "%d-%b-%Y") AS Data_of_Birth,
DATE_FORMAT(FROM_DAYS(DATEDIFF('2020-08-11', Date_of_Birth)),'%Y') +0 AS Age,
CONCAT(LEFT(Mobile_Number, 4),'-',SUBSTRING(Mobile_Number, 5, 7)) AS Mobile_Number,
Test_Centre
FROM mt_applications
WHERE
DATE_FORMAT(FROM_DAYS(DATEDIFF('2020-08-11', Date_of_Birth)),'%Y') >= 18 AND
DATE_FORMAT(FROM_DAYS(DATEDIFF('2020-08-11', Date_of_Birth)),'%Y') <= 27 AND
Name_of_Post = 'ASSISTANT (BPS-15)'
ORDER BY
Test_Centre ASC,
Appliction_ID ASC;
Pourrait-il jamais être un "A100"?