Saya punya masalah dengan pertanyaan saya di MySQL. Tabel saya memiliki 4 kolom dan terlihat seperti ini:
id_users id_product quantity date
1 2 1 2013
1 2 1 2013
2 2 1 2013
1 3 1 2013
id_users
dan id_product
kunci asing dari tabel yang berbeda.
Yang saya inginkan adalah menghapus hanya satu baris:
1 2 1 2013
Yang muncul dua kali, jadi saya hanya ingin menghapusnya.
Saya sudah mencoba pertanyaan ini:
delete from orders where id_users = 1 and id_product = 2
Tapi itu akan menghapus keduanya (karena mereka digandakan). Adakah petunjuk untuk menyelesaikan masalah ini?
mysql
delete-row
Dani
sumber
sumber
Semua tabel harus memiliki kunci utama (terdiri dari satu atau beberapa kolom), baris duplikat tidak masuk akal dalam database relasional. Anda dapat membatasi jumlah baris yang dihapus menggunakan
LIMIT
:Tapi itu hanya menyelesaikan masalah Anda saat ini, Anda pasti harus bekerja pada masalah yang lebih besar dengan mendefinisikan kunci utama.
sumber
Anda harus menentukan jumlah baris yang harus dihapus. Dalam kasus Anda (dan saya berasumsi bahwa Anda hanya ingin menyimpannya) ini dapat dilakukan seperti ini:
sumber
Cara terbaik untuk mendesain tabel adalah menambahkan satu baris sementara sebagai kenaikan otomatis dan simpan sebagai kunci utama. Jadi kita bisa menghindari masalah di atas.
sumber
Sudah ada jawaban untuk Menghapus baris demi baris
LIMIT
. Idealnya Anda harus memiliki kunci utama di meja Anda. Tetapi jika tidak ada.Saya akan memberikan cara lain:
Saya melihat id_users dan id_product harus unik dalam contoh Anda.
Ini akan menghapus baris duplikat dengan data yang sama.
Tetapi jika Anda masih mendapatkan kesalahan, bahkan jika Anda menggunakan klausa IGNORE, coba ini:
Jika ada beberapa baris yang memiliki nilai duplikat, maka Anda juga bisa membuat ulang tabel
sumber
Anda harus menambahkan id yang bertambah secara otomatis untuk setiap baris, setelah itu Anda dapat menghapus baris dengan idnya. jadi meja Anda akan memiliki id unik untuk setiap baris dan id_user, id_product ecc ...
sumber