17 Stimmen

Einfügeanweisung x-mal ausführen

Ich habe zwei Tabellen. Eine Tabelle A hat n Datenzeilen und die andere Tabelle B leer ist. Ich möchte insert n Zeilen in Tabelle B 1 Zeile für jede Zeile der Tabelle A . Tabelle B werden einige Felder aus der Tabelle A enthalten, einschließlich eines Fremdschlüssels aus der Tabelle A .

Am Ende möchte ich eine Zeile in B für jede Zeile in A . Hierfür habe ich verwendet:

INSERT INTO B(Col1
             ,Col2
             ,Col3
             ,Col4
             ,Col5
             );
SELECT 100
      ,25 
      ,'ABC'
      ,1
      ,A.ID
FROM Auctions A

Jetzt habe ich diesen Code in eine gespeicherte Prozedur eingefügt, und diese SP nimmt eine int param genannt NumInserts .

Ich möchte einfügen n * NumInserts Reihen. Wenn also n gleich 10 und NumInserts gleich 5 ist, möchte ich diesen Code 5 * 10 (50) Mal ausführen.

Mit anderen Worten, für jede Zeile in table A Ich möchte insert 5 Zeilen in table B . Wie würde ich das machen?

0voto

Dominus.Vobiscum Punkte 632

Versuchen Sie dies (bei SQL-Server-Datenbanken):

DECLARE @NumInserts SMALLINT = 3

INSERT INTO B (Col1, Col2, Col3, Col4, Col5)
    SELECT 100, 25, 'ABC', 1, A.ID
    FROM Auctions A
        JOIN master.dbo.spt_values numbers ON numbers.number < @NumInserts
    WHERE numbers.[type] = 'P'
  • Hinweis : Dies funktioniert nur, wenn @NumInserts kleiner als oder gleich 2048 ist
  • master.dbo.spt_values WHERE type = 'P' ist einfach eine eingebaute SQL Server-Tabelle mit Zahlen von 0 bis 2047

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X