2017-05-23 2 views
0

Ich habe SQL-Code, wie soll ich es ändern, um Daten nur einzufügen, wenn sie nicht in meiner Tabelle vorhanden sind. Vielen Dank für Ihre Antworten :)Insertig Daten, wenn nicht existiert

INSERT INTO stages_done(id_booked_proj, id_stage) 
SELECT booked_proj.id, stages.id_st 
FROM booked_proj, stages 
WHERE booked_proj.name='home' AND stages.name_st= 'sm'" 
+0

Was ist der PK in 'stages_done' Tabelle? – Gerry

+0

@Gerry Ich habe PK als autoincrement und ich sollte nur diese Spalten einfügen .. aber sie sollten nicht in Verbindung wiederholt werden "id_booked_proj-id_stage" Allerdings ID_booked_proj und id_stage konnte reforted – Roshki

+0

Überprüfen Sie die aktualisierte Antwort, die Sie erreichen können, indem Sie ein hinzufügen Index basierend auf diesen beiden Spalten. – Gerry

Antwort

0

Sie INSERT IGNORE, auf diese Weise die Zeile wird nicht eingefügt werden, wenn es führt zu einem doppelten Schlüssel verwenden können:

INSERT IGNORE INTO stages_done(id_booked_proj, id_stage) 
SELECT booked_proj.id, stages.id_st 
FROM booked_proj, stages 
WHERE booked_proj.name='home' AND stages.name_st= 'sm'" 

alle doppelten Schlüssel in Spalten entweder mit primärem KEY- oder UNIQUE-Bedingungen werden ignoriert.


Wenn Sie Zugang haben zu schreiben, können Sie eine Einschränkung auf den Tisch, wie folgt hinzu:

ALTER TABLE `stages_done` ADD UNIQUE `id_booked_proj_id_stage_index` (`id_booked_proj`, `id_stage`); 

Wo id_booked_proj_id_stage_index beliebigen Namen so lange wählen sein kann, wie es einzigartig ist.

+0

Ich möchte, dass Spalten in einer solchen Verbindung nicht wiederholt werden: "id_booked_projid_stage" ist das möglich? – Roshki

+0

@Roshki Ja, fügen Sie einfach eine Einschränkung zu Ihrer Tabelle mit id_booked_proj und id_stage hinzu. Überprüfen Sie die aktualisierte Antwort. – Gerry

Verwandte Themen