2016-08-18 5 views
1

Ich bin mit SQL Server 2008 und mit der Hilfe von anderen Threads, ich konnte folgendes schreiben:INSERT mehrere Zeilen basierend auf SELECT-Anweisung

insert into fml0grant (auto_key, roleid) 
    select fml0.auto_key, 20 
    from fml0 
    left join fml0grant on fml0.auto_key = fml0grant.auto_key 
    where fml0.dwgname <> '' 
     and fml0grant.roleid is null 

aber was ich tun muss für mehrere Zeilen einfügen Jeder Datensatz wurde in der WHERE-Klausel gefunden. Also, wenn die where-Klausel ein Ergebnis bekommt muss ich einfügen:

  1. fml0.auto_key, 20
  2. fml0.auto_key, 508
  3. fml0.auto_key, 10

Gibt es eine Möglichkeit Um alle drei Einfügungen in einer Anweisung zu kombinieren, ist der NULL in der WHERE-Klausel nach der ersten in meiner Abfrage nicht mehr wahr.

+3

Diese Frage mir nicht klar ist, schauen Sie bitte [hier] (https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a- public-forum /) zur Verbesserung der Frage .. – TheGameiswar

Antwort

1

Sie können CROSS JOIN wie folgt verwenden.

insert into fml0grant (auto_key, roleid) 
    select fml0.auto_key, V.Id 
    from fml0 
    left join fml0grant on fml0.auto_key = fml0grant.auto_key 
    CROSS JOIN (VALUES (20),(508),(10)) V (Id) 
    where fml0.dwgname <> '' 
     and fml0grant.roleid is null 
+1

Funktioniert ein Leckerbissen, Danke NEER – FredTheDog

Verwandte Themen