J'ai les données suivantes (violon),
id | datec | Événements |
---|---|---|
1 | 2022-09-19 12:16:38 | ÉVÉNEMENT |
2 | 2022-09-19 12:16:38 | A |
3 | 2022-09-19 12:21:08 | B |
4 | 2022-09-19 12:21:12 | ÉVÉNEMENT |
5 | 2022-09-19 12:25:18 | C |
6 | 2022-09-19 12:25:18 | D |
7 | 2022-09-19 12:25:28 | E |
8 | 2022-09-19 12:25:29 | F |
9 | 2022-09-19 12:25:38 | ÉVÉNEMENT |
10 | 2022-09-19 12:25:39 | G |
11 | 2022-09-19 12:25:40 | H |
12 | 2022-09-19 12:25:48 | moi |
13 | 2022-09-19 12:27:18 | ÉVÉNEMENT |
14 | 2022-09-19 12:29:08 | J |
Je ne sais pas comment sélectionner une valeur entre deux autres valeurs mais dans un ordre précis. Seuls les événements entre EVENTA et EVENTD doivent être renvoyés dans l'ordre.
Le résultat devrait donc être des lignes avec les identifiants 1 à 4 et 9 à 13
J'ai essayé de faire quelque chose comme ce qui suit, mais cela m'a donné les identifiants 1,4,9 et 13, en omettant le contenu intermédiaire.
SELECT id, datec, event FROM table1 WHERE event BETWEEN 'EVENTA' AND 'EVENTD';
Ensuite, j'ai essayé d'utiliser ceci,
SELECT id, datec, event FROM table1 WHERE (id BETWEEN (SELECT id FROM table1 WHERE event BETWEEN 'EVENTA' AND 'EVENTD' LIMIT 1) AND (SELECT id FROM table1 WHERE event BETWEEN 'EVENTA' AND 'EVENTD' LIMIT 1,1)) OR (id BETWEEN (SELECT id FROM table1 WHERE event BETWEEN 'EVENTA' AND 'EVENTD' LIMIT 2,1) AND (SELECT id FROM table1 WHERE event BETWEEN 'EVENTA' AND 'EVENTD' LIMIT 3,1));
Cela me donne les résultats mais j'ai beaucoup de lignes dans mon tableau.
Quelqu'un pourrait-il me guider comment répéter cela jusqu'à la fin car je suis sûr qu'il existe un moyen de le faire mais je ne sais pas comment ?
Salut,
Pierre
C'est un moyen :
À ce stade, vous devriez remarquer que lorsqu'il n'y a pas encore d'EventD dans notre partition armé_event, la valeur de classement que nous générons est supposée être 0. Lorsque le premier EventD est trouvé, sa valeur est 1 jusqu'à ce que le prochain EventD soit trouvé.
Ainsi, lorsque cette valeur de classement est 0 ou 1 et que l'événement s'avère être "EventD", vous pouvez filtrer en conséquence dans la clause
WHERE
.Sortie :