2016-03-31 3 views
0

Ich habe viele Antworten aus dem, was ich auf dieser Website einschließlich der "Wo nicht existiert" -Klausel gesehen habe versucht. Hier ist die ursprüngliche SQL ich mitMysql versucht, Zeilen einzufügen und doppelte Einträge mit vielen Problemen zu ignorieren

INSERT INTO tbl_Feed 
(FeedTypeID, CustomerID, Name, Code, Color, Icon, FeedTypeSortOrder, IsUsingEmailAddress, IsActive) 
select DISTINCT 
3, c.CustomerID, "Unattached Image", "Unattached Image", "0x0093D0", "offline_01.png", COALESCE((select MAX(FeedTypeSortOrder) as FeedTypeSortOrderMax  from tbl_Feed where FeedTypeID = 3 and customerid=c.CustomerID) + 1, 1), 0, 1 
from tbl_Customer c 
join tbl_Feed f on f.customerid = c.customerid 
where f.code != "Unattached Image" 

befasse Wenn ich das zweimal laufen, es tritt eine weitere Zeile für „Unattached Bild“. Ich will, dass es nur Tabellen beitritt, die diesen Wert noch nicht haben ... Ich dachte sicher, die where-Klausel zu where not exist(select name from tbl_Feed where name != "Unattached Image") zu ändern, aber das aktualisierte 0 Zeilen. Bitte beraten.

+0

was passiert, wenn Sie Anführungszeichen ändern '" 'zu Apostrophe' ' ' – cha

+0

gleiche Problem, Zeilen doesnt ignorieren, die bereits existieren – gallly

Antwort

2

Sie brauchen sich nicht verwenden VORHANDEN:?!

INSERT INTO tbl_Feed 
(FeedTypeID, CustomerID, Name, Code, Color, Icon, FeedTypeSortOrder, IsUsingEmailAddress, IsActive) 
select DISTINCT 
3, c.CustomerID, 'Unattached Image', 'Unattached Image', '0x0093D0', 
'offline_01.png', COALESCE((select MAX(FeedTypeSortOrder) as FeedTypeSortOrderMax  from tbl_Feed where FeedTypeID = 3 and customerid=c.CustomerID) + 1, 1), 0, 1 
from tbl_Customer c 
join tbl_Feed f on f.customerid = c.customerid 
where NOT EXISTS(select 1 from tbl_Feed where name = 'Unattached Image' AND CustomerID = c.CustomerID) 
+0

dank es funktionierte – gallly