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 : de alexis
