1826 Stimmen

Einfügen in ... Werte ( SELECT ... FROM ... )

Ich versuche, die INSERT INTO einer Tabelle unter Verwendung der Eingabe einer anderen Tabelle. Obwohl dies für viele Datenbank-Engines durchaus machbar ist, scheine ich mich immer an die korrekte Syntax für die SQL Motor des Tages ( MySQL , Oracle , SQL-Server , Informix y DB2 ).

Gibt es eine Patentrezept-Syntax, die aus einem SQL-Standard stammt (z. B., SQL-92 ), die es mir ermöglichen würde, die Werte einzufügen, ohne mich um die zugrunde liegende Datenbank zu kümmern?

2 Stimmen

Dieses Beispiel funktioniert: insert into tag_zone select @tag,zoneid,GETDATE(),@positiong.STIntersects(polygon) from zone

10voto

Pavel Punkte 401
select *
into tmp
from orders

Sieht gut aus, funktioniert aber nur, wenn tmp nicht existiert (erstellt und füllt). (SQL-Server)

Zum Einfügen in eine bestehende tmp-Tabelle:

set identity_insert tmp on

insert tmp 
([OrderID]
      ,[CustomerID]
      ,[EmployeeID]
      ,[OrderDate]
      ,[RequiredDate]
      ,[ShippedDate]
      ,[ShipVia]
      ,[Freight]
      ,[ShipName]
      ,[ShipAddress]
      ,[ShipCity]
      ,[ShipRegion]
      ,[ShipPostalCode]
      ,[ShipCountry] )
      select * from orders

set identity_insert tmp off

8voto

S.M.Fazle Rabbi Punkte 421

WENN Sie Daten in eine Tabelle einfügen wollen, ohne den Spaltennamen zu schreiben.

INSERT INTO CUSTOMER_INFO
   (SELECT CUSTOMER_NAME,
           MOBILE_NO,
           ADDRESS
      FROM OWNER_INFO cm)

Wo die Tische stehen:

            CUSTOMER_INFO               ||            OWNER_INFO
----------------------------------------||-------------------------------------
CUSTOMER_NAME | MOBILE_NO | ADDRESS     || CUSTOMER_NAME | MOBILE_NO | ADDRESS 
--------------|-----------|---------    || --------------|-----------|--------- 
      A       |     +1    |   DC        ||       B       |     +55   |   RR  

Ergebnis:

            CUSTOMER_INFO               ||            OWNER_INFO
----------------------------------------||-------------------------------------
CUSTOMER_NAME | MOBILE_NO | ADDRESS     || CUSTOMER_NAME | MOBILE_NO | ADDRESS 
--------------|-----------|---------    || --------------|-----------|--------- 
      A       |     +1    |   DC        ||       B       |     +55   |   RR
      B       |     +55   |   RR        ||

5voto

Sebastian Punkte 335

Wenn Sie INSERT VALUES verwenden, um mehrere Zeilen einzufügen, stellen Sie sicher, dass Sie die VALUES mit Hilfe von Klammern in Sätze aufteilen, also:

INSERT INTO `receiving_table`
  (id,
  first_name,
  last_name)
VALUES 
  (1002,'Charles','Babbage'),
  (1003,'George', 'Boole'),
  (1001,'Donald','Chamberlin'),
  (1004,'Alan','Turing'),
  (1005,'My','Widenius');

Andernfalls stellt MySQL fest, dass "Column count doesn't match value count at row 1", und Sie müssen einen trivialen Beitrag schreiben, wenn Sie endlich herausfinden, was zu tun ist.

8 Stimmen

Die Frage lautet "Einfügen in eine Tabelle unter Verwendung der Eingabe aus einer anderen Tabelle ". Wie geht Ihre Antwort auf diese Frage ein?

3 Stimmen

Sei nicht zu hart zu ihm. Er hat meine Frage beantwortet, als ich herumgegoogelt habe. @QualitätsKatalysator

3voto

Serdin Çelik Punkte 85

Wenn Sie zuerst eine Tabelle erstellen, können Sie diese wie folgt verwenden;

  select * INTO TableYedek From Table

Dies metot Werte einfügen, aber anders mit der Erstellung neuer Kopie Tabelle.

1 Stimmen

Wenn Sie die gesamte Tabelle als Backup speichern, verwenden Sie diese Abfrage. select * INTO TableYedek_Backup From TableYedek

1voto

Miroslav Savel Punkte 124

In Informix funktioniert es, wie Claude sagte:

INSERT INTO table (column1, column2) 
VALUES (value1, value2);

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