Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| devweb:mysql [23-01-2015 08:07] – edmc73 | devweb:mysql [15-04-2021 12:28] (Version actuelle) – edmc73 | ||
|---|---|---|---|
| Ligne 7: | Ligne 7: | ||
| * http:// | * http:// | ||
| + | |||
| + | |||
| + | ===== Cas d'une table de config avec une date ===== | ||
| + | |||
| + | ^ id ^ user_id | ||
| + | | 1 | 1 | 2020-03-10 | toto | | ||
| + | | 2 | 1 | 2020-03-20 | super toto | | ||
| + | | 3 | 2 | 2020-01-01 | tata | | ||
| + | |||
| + | je veux les derniers nom des utilisateurs | ||
| + | |||
| + | <code sql> | ||
| + | select user_id, name | ||
| + | from users t1 | ||
| + | WHERE EXISTS(SELECT 1 | ||
| + | FROM users t2 | ||
| + | WHERE t2.user_id = t1.user_id | ||
| + | GROUP BY t2.user_id | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ^ user_id ^ name ^ | ||
| + | | 1 | super toto | | ||
| + | | 2 | tata | | ||
| + | |||
| + | Par contre, si vous avez des date dans le futur, il faudra utiliser cette requête | ||
| + | <code sql> | ||
| + | select user_id, name | ||
| + | from users t1 | ||
| + | WHERE EXISTS(SELECT 1 | ||
| + | FROM users t2 | ||
| + | WHERE t2.user_id = t1.user_id and t2.date< | ||
| + | GROUP BY t2.user_id | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | Variantes de la 1ère requête qui semble plus rapide | ||
| + | <code sql> | ||
| + | select t1.user_id, | ||
| + | from users as t1, | ||
| + | ( | ||
| + | select user_id, MAX(date) as date | ||
| + | from users | ||
| + | group by user_id | ||
| + | ) as t2 | ||
| + | where | ||
| + | t1.user_id=t2.user_id and t1.date=t2.date | ||
| + | </ | ||