我有一個(gè)數(shù)據(jù)集(示例 5 個(gè)字段)如下。
開始日期 | 時(shí)間 | 數(shù)字1 | 數(shù)字2 | 鍵1 | 鍵2 |
---|---|---|---|---|---|
2022年11月21日 | 0:01 | 1668969012 | 413027032418217 | B3B820CE | |
2022年11月21日 | 0:02 | B3B820CE | |||
2022年11月21日 | 0:03 | 1668969013 | 413027032418218 | 8EFCB769 | |
2022年11月21日 | 0:04 | 8EFCB769 | |||
2022年11月21日 | 0:05 | 1668969014 | 413027032418219 | 4070A788 |
正如您所看到的,前兩行和后兩行可以通過使用 key1 和 key2 中的字符串進(jìn)行耦合。但對于最后一個(gè)字段,沒有任何匹配字段。
基本上我需要匹配這些對并創(chuàng)建一個(gè)新表,如下所示。
開始日期 | 時(shí)間 | 結(jié)束日期 | 時(shí)間 | 數(shù)字1 | 數(shù)字2 |
---|---|---|---|---|---|
2022年11月21日 | 0:01 | 2022年11月21日 | 0:02 | 1668969012 | 413027032418217 |
2022年11月21日 | 0:03 | 2022年11月21日 | 0:04 | 1668969013 | 413027032418218 |
2022年11月21日 | 0:05 | 1668969014 | 413027032418219 |
這是我到目前為止所嘗試的。但這并沒有提供我所需要的。有人可以告訴我這里的錯(cuò)誤是什么嗎?
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
錯(cuò)誤很簡單 - INNER JOIN 將僅選擇完整的對。
您必須在單獨(dú)的子查詢中收集所有鍵值,然后將數(shù)據(jù)加入其中。
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