So verknüpfen Sie eine Tabelle mit sich selbst durch Schlüssel in verschiedenen Spalten, die NULL sein können
P粉448346289
P粉448346289 2023-09-09 11:27:14
0
1
625

Ich habe einen Datensatz (Beispiel 5 Felder) wie folgt.

Startdatum Zeit Nummer 1 Nummer 2 Schlüssel 1 Schlüssel 2
21. November 2022 0:01 1668969012 413027032418217 B3B820CE
21. November 2022 0:02 B3B820CE
21. November 2022 0:03 1668969013 413027032418218 8EFCB769
21. November 2022 0:04 8EFCB769
21. November 2022 0:05 1668969014 413027032418219 4070A788

Wie Sie sehen können, können die ersten beiden Zeilen und die letzten beiden Zeilen mithilfe der Zeichenfolgen in Schlüssel1 und Schlüssel2 gekoppelt werden. Für das letzte Feld gibt es jedoch kein passendes Feld.

Grundsätzlich muss ich diese Paare zuordnen und eine neue Tabelle erstellen, wie unten gezeigt.

Startdatum Zeit Enddatum Zeit Nummer 1 Nummer 2
21. November 2022 0:01 21. November 2022 0:02 1668969012 413027032418217
21. November 2022 0:03 21. November 2022 0:04 1668969013 413027032418218
21. November 2022 0:05 1668969014 413027032418219

Das habe ich bisher versucht. Aber das bietet nicht das, was ich brauche. Kann mir jemand sagen, was hier der Fehler ist?

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

P粉448346289
P粉448346289

Antworte allen(1)
P粉278379495

错误很简单 - INNER JOIN 将仅选择完整的对。

您必须在单独的子查询中收集所有键值,然后将数据加入其中。

SELECT t1.start_date_time,t2.start_date_time as end_date_time,t1.number1,t1.number2
FROM ( SELECT key1 AS key FROM table
       UNION                           -- combine columns values and remove duplicates
       SELECT key2 AS key FROM table
       ) all_keys
LEFT JOIN table t1 ON all_keys.key = t1.key1
LEFT JOIN table t2 ON all_keys.key = t2.key2

如果 key1 值始终存在,而 key2 中的相同值可能不存在,那么您可以使用简单的 LEFT JOIN:

SELECT t1.start_date_time,t2.start_date_time as end_date_time,t1.number1,t1.number2
FROM      table t1
LEFT JOIN table t2 ON t1.key1 = t2.key2
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage