Saya mempunyai meja permainan dengan penerangan berikut:
+---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | date | date | NO | | NULL | | | time | time | NO | | NULL | | | hometeam_id | int(11) | NO | MUL | NULL | | | awayteam_id | int(11) | NO | MUL | NULL | | | locationcity | varchar(30) | NO | | NULL | | | locationstate | varchar(20) | NO | | NULL | | +---------------+-------------+------+-----+---------+----------------+
Tetapi setiap perlawanan mempunyai catatan pendua di suatu tempat dalam jadual kerana setiap perlawanan adalah dalam jadual kedua-dua pasukan. Adakah terdapat pernyataan SQL yang boleh saya gunakan untuk melihat dan mengalih keluar semua pendua berdasarkan medan tarikh, masa, hometeam_id, awayteam_id, locationcity dan locationstate yang sama?
Anda boleh mencuba pertanyaan seperti ini:
Ini akan menyimpan hanya satu contoh bagi setiap contoh permainan dengan ID terkecil dalam pangkalan data.
Anda sepatutnya dapat melakukan subkueri berkorelasi untuk mengalih keluar data. Cari semua baris pendua dan padam semua kecuali baris dengan id terkecil. Untuk MYSQL, anda perlu menggunakan inner joins (bersamaan dengan fungsi EXISTS), seperti berikut:
Untuk menguji, letak
从游戏中删除游戏
替换为从游戏中选择*
. Jangan hanya jalankan delete pada pangkalan data :-)