Wählen Sie in einer Update-Anweisung veranschaulicht

April 29

Die Designer von Structured Query Language (SQL) erstellt ein leistungsstarkes Tool zum Verwalten von Daten mit nur ein paar einfache Befehle. Eines der mächtigsten Konstrukte tritt, wenn Befehle geschachtelt sind. Ein SELECT-, Update- oder Delete-Befehl verwendet eine oder mehrere zusätzliche Select-Befehle, um seinen Betrieb zu begrenzen. Beispielsweise tritt ein Update auf die Customer-Tabelle nur als Gesamtumsatz aus mehrere Verkäufe Aufzeichnungen insgesamt mehr als $250 aggregiert. Gehen folgendermaßen Sie vor, um mehrere verschachtelte Update-Befehle zu erstellen.

Anweisungen

1 Öffnen Sie den SQL-Abfrage-Editor und erstellen Sie eine neue Datenbank SampleDB aufgerufen. Wählen Sie diese Datenbank für die Abfragesitzung.

Erstellen Sie die Datenbank SampleDB;

Verwenden Sie SampleDB;

Diese Beispiele wurden mit den Abfrage-Editor in Microsoft SQL Server 2008 Management Studio Express erstellt.

2 Erstellen Sie zwei Tabellen Kunden und Vertriebspartner, und fügen Sie dann ein paar Datensätze in beiden Tabellen, die mit dem folgenden Skript.

Erstellen der Tabelle Kunden

(CustomerID Int Primärschlüssel,

Name varchar(50),

Status varchar(10));

Insert into Kunden Values (1, 'Mustermann', 'Neu');

Legen Sie in Kunden-Werte (2, 'Mary Jones', 'Neu');

Insert into Kunden Values (3 'Fred Adams', 'Neu');

Erstellen der Tabelle Sales

(SalesID Int Primary Key,

CustomerID Int Referenzen Kunden

Betrag-Int);

Legen Sie in Sales-Werte (1, 1, 500);

Legen Sie in Sales-Werte (1, 2, 250);

Legen Sie in Sales-Werte (3, 3, 50);

3 Erstellen Sie eine verschachtelte Abfrage kombiniert ein Update mit einer Select-Anweisung, die Kundenstatus aktive Kunden festlegt, die Aktivität in der Sales-Tabelle haben.

Kunden zu aktualisieren

Set Status = 'Aktiv'

wo CustomerID In

(Wählen Sie aus dem Verkauf CustomerID);

Dies ist eine standard SQL Update-Anweisung, die das Feld Status für eine ausgewählte Gruppe von Datensätzen in der Tabelle Kunden aktiv festlegt. In einer geschachtelten Abfrage der Where-Klausel enthält eine oder mehrere Select-Anweisungen, die von runden Klammern () umgeben. Jede Select-Anweisung gibt eine Liste der Werte, die verglichen werden kann mit einem Feld in der Tabelle. In diesem Fall werden nur diejenigen Kundendatensätze, die Kunden-IDs in der Sales-Tabelle gefunden haben aktualisiert.

4 Erstellen Sie eine zweite geschachtelte Abfrage mithilfe einer Select-Anweisung, die Gesamtumsätze zusammenfasst.

Kunden zu aktualisieren

Set Status = 'Premium'

wo CustomerID In

(Wählen Sie CustomerID aus Verkäufen

Gruppe von CustomerID

Mit einem sum(Amount) > 250);

Wenn Sie geschachtelte Abfragen analysieren, beginnen Sie mit der Select-Anweisungen finden in der Where Klausel. In diesem Fall wird die Tabelle Sales aggregiert nach Kunden-ID (Gruppe von CustomerID), insgesamt die Verkaufszahlen (Sum(Amount)). Nur diejenigen mit Gesamtumsatz größer als $250 werden ausgewählt. Diese Liste wird dann zum Filtern verwendet, welche Kunden-Datensätze werden aktualisiert (1 Kunde).

5 Erstellen Sie eine mehr verschachtelte Abfrage, die Kundendatensätze auswählt, die in der Tabelle Sales nicht gefunden werden.

Kunden zu aktualisieren

Setzen Status 'Inaktiv' =

wo CustomerID nichtin

(Wählen Sie aus dem Verkauf CustomerID);

Diese Abfrage wählt zuerst eine Liste der Kunden-IDs, die in der Tabelle Sales (1 und 3) gefunden und aktualisiert dann nicht in der Liste (Kunde 2) gefunden.

Tipps & Warnungen

  • Da verschachtelte Abfragen führen zwei separate sucht, wird die Ausführungszeit manchmal ein Problem.