Hapuskan baris dengan nilai pendua dalam lajur a daripada jadual
P粉366946380
P粉366946380 2024-03-31 10:42:26
0
1
393

Adakah terdapat cara untuk menyemak sama ada lead_id muncul beberapa kali dalam jadual dan jika ya, kecualikan ia daripada pertanyaan? Sebabnya ialah saya hanya mahu menambah baris baharu jika status_id = 1 dan tiada status_id/baris lain untuk Lead_id itu ditemui.

Pangkalan data direka bentuk sedemikian rupa sehingga setiap kemas kini status mencipta baris baharu. Oleh itu, baris lama mempunyai cap masa yang lebih lama dan kekal dalam jadual pangkalan data, ini akan dipaparkan dalam komponen sejarah status bahagian hadapan. Tetapi memandangkan ia direka dengan cara ini, saya tidak boleh hanya mengatakan: berikan setiap pengguna status 1 dan kemas kini status baharu. Kerana kemudian ia akan menambah baris untuk setiap Lead_id kerana semua petunjuk akan memasuki pangkalan data dengan status_id 1.

Pertanyaan yang saya gunakan setakat ini:

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
WHERE `lead__status_id` = 1 AND 

Begitu rupa data:

lead_id status_id Lebih banyak data
1 1 Data
1 12 Data
2 1 Data
2 14 Data
3 1 Data
4 1 Data
5 1 Data
6 1 Data

Untuk setiap petunjuk baharu (penyerahan borang) ia akan mencipta baris dan memberikan status_id petunjuk itu 1 (status: baharu). Saya perlu mengemas kini kumpulan 200+ petunjuk daripada 1 kepada status_id yang lain, tetapi dengan pertanyaan yang saya ada sekarang, ia akan mengemas kini setiap baris yang mengandungi status_id sebanyak 1. Apa yang saya mahu ialah ia akan terlebih dahulu menyemak sama ada Lead_id wujud dalam jadual hanya sekali dan jika benar kemudian tambahkan baris baharu dengan status_id yang dikemas kini.

Jadi selepas pertanyaan sql ia perlu kelihatan seperti ini:

lead_id status_id Lebih banyak data
1 1 Data
1 12 Data
2 1 Data
2 14 Data
3 1 Data
3 12 Data
4 1 Data
4 12 Data
5 1 Data
5 12 Data
6 1 Data
6 12 Data

TLDR: Jika Lead_id ditemui sekali sahaja dalam jadual, tambahkan baris baharu dengan status_id.

P粉366946380
P粉366946380

membalas semua(1)
P粉441076405

Jika jadual anda mempunyai ID unik untuk setiap baris, maka anda boleh menggunakan pertanyaan seperti ini

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
FROM `lead_has_status` l
WHERE `lead__status_id` = 1 AND NOT EXISTS ( 
  SELECT 1 FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id` AND id  l.id );

Dan tiada ID

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
FROM `lead_has_status` l
WHERE `lead__status_id` = 1 AND  () 
  SELECT COUNT(*) FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id`) = 1 ;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan