J'ai un ensemble de données (exemple 5 champs) comme suit.
Date de début | Heure | Numéro 1 | Numéro 2 | Clé 1 | Clé 2 |
---|---|---|---|---|---|
21 novembre 2022 | 0:01 | 1668969012 | 413027032418217 | B3B820CE | |
21 novembre 2022 | 0:02 | B3B820CE | |||
21 novembre 2022 | 0:03 | 1668969013 | 413027032418218 | 8EFCB769 | |
21 novembre 2022 | 0:04 | 8EFCB769 | |||
21 novembre 2022 | 0:05 | 1668969014 | 413027032418219 | 4070A788 |
Comme vous pouvez le voir, les deux premières lignes et les deux dernières lignes peuvent être couplées en utilisant les chaînes de key1 et key2. Mais pour le dernier champ, il n’y a pas de champ correspondant.
En gros, je dois faire correspondre ces paires et créer un nouveau tableau comme indiqué ci-dessous.
Date de début | Heure | Date de fin | Heure | Numéro 1 | Numéro 2 |
---|---|---|---|---|---|
21 novembre 2022 | 0:01 | 21 novembre 2022 | 0:02 | 1668969012 | 413027032418217 |
21 novembre 2022 | 0:03 | 21 novembre 2022 | 0:04 | 1668969013 | 413027032418218 |
21 novembre 2022 | 0:05 | 1668969014 | 413027032418219 |
C'est ce que j'ai essayé jusqu'à présent. Mais cela ne fournit pas ce dont j'ai besoin. Quelqu'un peut-il me dire quelle est l'erreur ici ?
SELECT t1.start_date_time, t2.start_date_time AS end_date_time, t1.number1, t1.number2 FROM details_all AS t1 JOIN details_all AS t2 ON t1.key1 = t2.key2
L'erreur est simple : INNER JOIN ne sélectionnera que des paires complètes.
Vous devez collecter toutes les valeurs clés dans une sous-requête distincte, puis y joindre les données.
Si la même valeur dans
key1
值始终存在,而key2
n'existe pas, alors vous pouvez utiliser un simple LEFT JOIN :