Saya mempunyai set data (contoh 5 medan) seperti berikut.
Tarikh mula | Masa | Nombor 1 | Nombor 2 | Kunci 1 | Kunci 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 |
Seperti yang anda lihat, dua baris pertama dan dua baris terakhir boleh digandingkan dengan menggunakan rentetan dalam kekunci1 dan kekunci2. Tetapi untuk medan terakhir, tiada medan sepadan.
Pada asasnya saya perlu memadankan pasangan ini dan mencipta jadual baharu seperti yang ditunjukkan di bawah.
Tarikh mula | Masa | Tarikh tamat | Masa | Nombor 1 | Nombor 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 |
Ini yang saya cuba setakat ini. Tetapi ini tidak menyediakan apa yang saya perlukan. Bolehkah seseorang memberitahu saya apakah kesilapan di sini?
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
Ralatnya mudah - INNER JOIN hanya akan memilih pasangan yang lengkap.
Anda perlu mengumpul semua nilai utama dalam subkueri berasingan dan kemudian sertakan data di dalamnya.
Jika nilai yang sama dalam
key1
值始终存在,而key2
mungkin tidak wujud, maka anda boleh menggunakan LEFT JOIN yang mudah: