Heim >Datenbank >MySQL-Tutorial >Wie füge ich aus einer nichtskalaren Unterabfrage mehrere Zeilen in eine SQL Server-Tabelle ein?

Wie füge ich aus einer nichtskalaren Unterabfrage mehrere Zeilen in eine SQL Server-Tabelle ein?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 14:11:40714Durchsuche

How to Insert Multiple Rows into a SQL Server Table from a Non-Scalar Subquery?

Einfügen von Werten in eine Tabelle aus einer nichtskalaren Unterabfrage

In SQL Server das Einfügen von Werten in eine Tabelle basierend auf einer Unterabfrage, die zurückgegeben wird Mehrere Ergebnisse können eine Herausforderung sein. Stellen Sie sich das folgende Szenario vor:

Sie haben zwei Tabellen:

  • Artikel
  • Preise

Sie möchten Zeilen mit spezifischen Werten für die Tabelle Preise einfügen group, id und price, wobei die id-Werte von einer Unterabfrage abgeleitet werden, die passende IDs aus auswählt ArtikelTabelle.

Falsch Ansatz:

Der Versuch, eine Unterabfrage mit mehr als einem Ergebnis als Wert für eine Spalte in einer INSERT-Anweisung zu verwenden, kann zu einem Fehler führen, wie die folgende falsche SQL-Anweisung zeigt:

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);

Richtige Lösung:

Um dieses Problem zu beheben, verwenden Sie a SELECT-Anweisung, um die gewünschten Werte abzurufen und in die Zieltabelle einzufügen. Weisen Sie die konstanten Werte für die Spalten group und price direkt in der SELECT-Anweisung zu:

insert into prices (group, id, price)
select 
    7, articleId, 1.50
from article where name like 'ABC%';

In dieser Anweisung gibt die Unterabfrage einen Rückgabewert zurück Die Artikel-IDs, die den angegebenen Namenskriterien entsprechen, und die konstanten Werte 7 und 1,50 werden dem explizit zugewiesen Spalten Gruppe und Preis.

Das obige ist der detaillierte Inhalt vonWie füge ich aus einer nichtskalaren Unterabfrage mehrere Zeilen in eine SQL Server-Tabelle ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn