Eliminieren Sie Zeilen mit doppelten Werten in Spalte a aus einer Tabelle
P粉366946380
P粉366946380 2024-03-31 10:42:26
0
1
276

Gibt es eine Möglichkeit zu überprüfen, ob die Lead_ID mehrmals in der Tabelle vorkommt, und sie in diesem Fall von der Abfrage auszuschließen? Der Grund dafür ist, dass ich nur dann eine neue Zeile hinzufügen möchte, wenn status_id = 1 und keine andere status_id/Zeile für diese Lead_id gefunden wird.

Die Datenbank ist so konzipiert, dass bei jeder Statusaktualisierung eine neue Zeile erstellt wird. Daher haben alte Zeilen ältere Zeitstempel und verbleiben in der Datenbanktabelle, und diese werden in der Statusverlaufskomponente des Frontends angezeigt. Aber da es so konzipiert ist, kann ich nicht einfach sagen: Gebt jedem Benutzer einen Status 1 und ein neues Status-Update. Denn dann wird für jede Lead_ID eine Zeile hinzugefügt, da alle Leads mit der Status_ID 1 in die Datenbank aufgenommen werden.

Abfragen, die ich bisher verwendet habe:

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 

Wie die Daten aussehen:

lead_id status_id Mehr Daten
1 1 Daten
1 12 Daten
2 1 Daten
2 14 Daten
3 1 Daten
4 1 Daten
5 1 Daten
6 1 Daten

Für jeden neuen Lead (Formularübermittlung) wird eine Zeile erstellt und diesem Lead die status_id 1 (Status: neu) zugewiesen. Ich muss zwar die über 200 Leads stapelweise von 1 auf eine andere Status_ID aktualisieren, aber mit der Abfrage, die ich jetzt habe, wird jede Zeile aktualisiert, die eine Status_ID von 1 enthält. Ich möchte, dass zunächst geprüft wird, ob die Lead_id nur einmal in der Tabelle vorhanden ist. Wenn dies zutrifft, wird eine neue Zeile mit der aktualisierten status_id hinzugefügt.

Nach der SQL-Abfrage muss es also so aussehen:

lead_id status_id Mehr Daten
1 1 Daten
1 12 Daten
2 1 Daten
2 14 Daten
3 1 Daten
3 12 Daten
4 1 Daten
4 12 Daten
5 1 Daten
5 12 Daten
6 1 Daten
6 12 Daten

TLDR: Wenn Lead_id nur einmal in der Tabelle gefunden wird, fügen Sie eine neue Zeile mit status_id hinzu.

P粉366946380
P粉366946380

Antworte allen(1)
P粉441076405

如果您的表每行都有一个唯一的 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 NOT EXISTS ( 
  SELECT 1 FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id` AND id  l.id );

并且没有 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 ;
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!