2016-06-04 4 views
4

Ich habe 2 SQL-Tabellen, Tabelle1 und Tabelle2.sql einfügen zu Tabelle realted zu einer anderen Tabelle und konstante Werte

table1 hat zwei Spalten und ich möchte Werte in diese Spalten einfügen. eine der Spalten sollte einen statischen Wert erhalten und die andere Spalte sollte einen Wert erhalten, der das Ergebnis einer Abfrage von table2 ist.

Wenn ich die statischen Daten separat einfügen will ich tun würde:

INSERT INTO table1(login_id) 
VALUES ('1234'); 

und wenn ich separat den dynamischen Wert einfügen will ich tun würde:

INSERT INTO table1(user_uuid) 
SELECT users_uuid FROM table2 where first_name like 'ortal'; 

Wie beiden Werte einfügen zu Tabelle1 in einer Aktion?

Wenn ich die erste Abfrage versuchen, erhalte ich:

11:20:45 INSERT INTO table1(login_id ,user_uuid) VALUES ('1234') Error Code: 1136. Column count doesn't match value count at row 1 0.000 sec 

INSERT INTO `users`.`table1` (`login_id`) VALUES ('1234'); 

ERROR 1364: 1364: Field 'user_uuid' doesn't have a default value 
+1

Ist das nicht das, was @murelnik ‚s Antwort sagt Ihnen, wie man löst? – e4c5

Antwort

5

Sie können die Konstanten in Ihre Auswahlliste hinzufügen und eine Spalten behandeln:

INSERT INTO table1(user_uuid, login_id) 
SELECT users_uuid, '1234' FROM table2 WHERE first_name LIKE 'ortal'; 
+0

Aus dem Code, den Sie bereitgestellt haben, fügen Sie Daten in table1 ein? Ihr Problem ist, dass user_uuid ein NOT NULL-Feld zu sein scheint, was bedeutet, dass Sie dies beim Einfügen anderer Daten angeben müssen. Der Code, den @mureinik zur Verfügung stellt, macht das für Sie. Wenn Sie über das Einfügen von Daten in table2 sprechen, müssen Sie Ihre ursprüngliche Frage korrigieren. –

Verwandte Themen