informatique:databases:mysql:requetes_donnees
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
informatique:databases:mysql:requetes_donnees [2024/11/21 18:37] – ↷ Page déplacée de informatique:mysql:requetes_donnees à informatique:databases:mysql:requetes_donnees alexis | informatique:databases:mysql:requetes_donnees [2024/11/21 18:54] (Version actuelle) – alexis | ||
---|---|---|---|
Ligne 203: | Ligne 203: | ||
</ | </ | ||
</ | </ | ||
- | |||
- | ====== Requêtes amusantes ====== | ||
- | ===== Multiplier le nombre de lignes d'une table ===== | ||
- | Cette requête permet de multiplier le nombre d' | ||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT id | ||
- | , multiplier | ||
- | FROM < | ||
- | , ( | ||
- | SELECT 0 AS `rank` | ||
- | UNION ALL SELECT 1 | ||
- | UNION ALL SELECT 2 | ||
- | UNION ALL SELECT 3 | ||
- | UNION ALL SELECT 4 | ||
- | UNION ALL SELECT 5 | ||
- | UNION ALL SELECT 6 | ||
- | UNION ALL SELECT 7 | ||
- | UNION ALL SELECT 8 | ||
- | UNION ALL SELECT 9 | ||
- | ) as multiplier | ||
- | where multiplier.`rank` < < | ||
- | </ | ||
- | </ | ||
- | |||
- | <WRAP tip> | ||
- | Il est possible de se passer des //UNION// en remplaçant la sous-requête par une table contenant les nombres de **0** à **n**. | ||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT id | ||
- | , multiplier | ||
- | FROM < | ||
- | , multiplier | ||
- | WHERE multiplier.`rank` < < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Trier des numéros de version ===== | ||
- | Cette requête permet de trier des numéros de versions (//5//, //4.1//, //3.2.5//, ...) entre eux. | ||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT version | ||
- | , @version := IF(LOCATE(' | ||
- | , @version := IF(@version REGEXP ' | ||
- | , CONCAT( | ||
- | | ||
- | | ||
- | | ||
- | ) AS concat | ||
- | FROM docs | ||
- | ORDER BY concat DESC | ||
- | </ | ||
- | </ | ||
- | <WRAP important> | ||
- | Limitations : | ||
- | * Cette requête ne permet de gérer que des versions dont le format correspond au versionnage sémantique. | ||
- | * Seules les versions ne contenant que des chiffres sont supportées. | ||
- | * Les sections du numéro de version ne peuvent pas excéder 10 caractères. | ||
- | </ | ||
- | |||
- | ===== Récupération des " | ||
- | **Récupération sous la forme de plages d' | ||
- | <WRAP important> | ||
- | Cette requête ne permet pas de récupérer le premier " | ||
- | </ | ||
- | |||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT range_start | ||
- | , range_end | ||
- | FROM ( | ||
- | SELECT | ||
- | , table1.id - 1 AS range_end | ||
- | FROM < | ||
- | JOIN (SELECT @rownum1 := 0) AS dummy | ||
- | LEFT JOIN < | ||
- | WHERE table2.id IS NULL | ||
- | AND table1.id <> (SELECT MIN(id) FROM < | ||
- | ) AS e | ||
- | , ( | ||
- | SELECT @rownum2 := @rownum2 + 1 AS rownum_start | ||
- | , table1.id + 1 AS range_start | ||
- | FROM < | ||
- | JOIN (SELECT @rownum2 := 0) AS dummy | ||
- | LEFT JOIN < | ||
- | WHERE table2.id IS NULL | ||
- | AND table1.id <> (SELECT MAX(id) FROM < | ||
- | ) AS s | ||
- | WHERE rownum_end = rownum_start | ||
- | </ | ||
- | </ | ||
- | **Récupération de la liste complète des identifiants** | ||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT dummy.`row` | ||
- | FROM ( | ||
- | SELECT @row := @row + 1 AS `row` | ||
- | FROM | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy1, | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy2, | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy3, | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy4, | ||
- | (SELECT @row := 0) numbers | ||
- | WHERE @row <= (SELECT MAX(id) FROM < | ||
- | ) dummy | ||
- | LEFT JOIN < | ||
- | WHERE table1.id IS NULL | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Générer une liste de 1000 dates ===== | ||
- | Cette méthode peut être étendue pour générer plus de dates ou au contraire restreinte pour en générer moins. Dans l' | ||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT ' | ||
- | FROM ( | ||
- | SELECT 0 AS val | ||
- | UNION ALL SELECT 1 | ||
- | UNION ALL SELECT 2 | ||
- | UNION ALL SELECT 3 | ||
- | UNION ALL SELECT 4 | ||
- | UNION ALL SELECT 5 | ||
- | UNION ALL SELECT 6 | ||
- | UNION ALL SELECT 7 | ||
- | UNION ALL SELECT 8 | ||
- | UNION ALL SELECT 9 | ||
- | ) AS units | ||
- | CROSS JOIN ( | ||
- | SELECT 0 AS val | ||
- | UNION ALL SELECT 10 | ||
- | UNION ALL SELECT 20 | ||
- | UNION ALL SELECT 30 | ||
- | UNION ALL SELECT 40 | ||
- | UNION ALL SELECT 50 | ||
- | UNION ALL SELECT 60 | ||
- | UNION ALL SELECT 70 | ||
- | UNION ALL SELECT 80 | ||
- | UNION ALL SELECT 90 | ||
- | ) AS tens | ||
- | CROSS JOIN ( | ||
- | SELECT 0 AS val | ||
- | UNION ALL SELECT 100 | ||
- | UNION ALL SELECT 200 | ||
- | UNION ALL SELECT 300 | ||
- | UNION ALL SELECT 400 | ||
- | UNION ALL SELECT 500 | ||
- | UNION ALL SELECT 600 | ||
- | UNION ALL SELECT 700 | ||
- | UNION ALL SELECT 800 | ||
- | UNION ALL SELECT 900 | ||
- | ) AS hundreds | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Générer une liste de nombre ===== | ||
- | Cette requête permet de générer une liste de 10000 valeurs consécutives. Pour avoir plus de valeur, il faut ajouter une ligne identique aux lignes '' | ||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT @row := @row + 1 AS `row` | ||
- | FROM | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy1, | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy2, | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy3, | ||
- | (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS dummy4, | ||
- | (SELECT @row := 0) numbers | ||
- | </ | ||
- | </ | ||
- | |||
- | ===== Quine ===== | ||
- | Une [[http:// | ||
- | |||
- | <WRAP prewrap> | ||
- | <code sql> | ||
- | SELECT REPLACE(REPLACE(' | ||
- | </ | ||
- | </ | ||
- | |||
- | ^ Code ASCII ^ Caractère ^ | ||
- | | 34 | " | | ||
- | | 36 | $ | | ||
- | | 39 | ' | |
informatique/databases/mysql/requetes_donnees.1732243056.txt.gz · Dernière modification : 2024/11/21 18:37 de alexis