2017-10-30 3 views
-2

Ich habe TABLE_A (user, book, msdin); und TABLE_B (car_id, user, book, msdin);Fehler SQL: ORA-00907: "fehlende rechte Klammer"

Ich versuche, diese Einlage zu machen

INSERT INTO TABLE_B (car_id, user, book, msdin) 
values 
(11, (select user, book, msdin from TABLE_A)); 

aber ich habe diesen Fehler: ORA-00907: "missing right parenthesis", aber die Zahl der rechten/linken Klammer ist die gleiche

+0

was ist das 11 Wert? –

+3

Sie möchten in 4 Spalten einfügen, aber 1 + 4 Werte angeben. – jarlh

+0

Sie fügen mehr als 4 Werte ein –

Antwort

1

Ihre Anzahl Spalten in Einsatz passt nicht die Anzahl Spalten in Werte Feld. Versuchen Sie das ..

INSERT INTO TABLE_B (car_id, user, book, msdin) 
select 11, user, book, msdin from TABLE_A ; 
+0

'TABLE_A' hat keine 'car_id'-Spalte - dies sollte das Zahlenliteral' 11' sein. – MT0

+0

Fertig! Bitte einmal prüfen ... –

1

Sie wahrscheinlich brauchen die INSERT SELECT Anweisung

INSERT INTO TABLE_B (car_id, user, book, msdin) 
select 11, user, book, msdin from TABLE_A; 

Die Anzahl der Werte und ihrer Datentypen, die von SELECT zurückgegeben werden, muss den Attributen von entsprechen die Tabelle hinter INSERT. Es ist nicht möglich, subselect hinter VALUES in INSERT zu verwenden, wie Sie es versuchen.

-2

Wenn Ihr TABLE_A nur 1 Datensatz hat, dann müssen Sie folgendes tun -

INSERT INTO TABLE_B (car_id, user, book, msdin) 
values 
    (11, 
    (select user from TABLE_A), 
    (select book from TABLE_A), 
    (select msdin from TABLE_A), 
); 
+0

@Dear Downwoters - Es wäre nett, wenn Sie auch einen Kommentar hinzufügen könnten. Für mich wird die obige Antwort sicher funktionieren. –

+0

das ist, was meine erste Zeile in der Antwort sagt, wenn Ihre 'TABLE_A' nur 1 Datensatz hat. –

Verwandte Themen