2012-03-24 29 views
1

Wenn ich diese Abfrage verwende ich einen Fehler wie dieseAbfrage nicht in Mysql Arbeits

# 1064 gefunden - Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MySQL-Server-Version für die richtige Syntax entspricht in der Nähe von 'select table1.name, table2.age aus Tabelle1 INNER JOIN Tabelle2 ON table1.name = t' zu verwenden, in Zeile 1

I habe ich Tabellen

table1 contain name an id fields 
table2 contain id, name an age fields 
table3 contain name age ane id field 

den Namen aus der Tabelle nehmen 1 dann das Alter von table2 und Einsatz kommt, die in table3 Werten

ich bin Abfrage mit

INSERT INTO table3 (name,age) values (select table1.name , table2.age from table1 INNER JOIN table2 ON table1.name = table2.name) 

aber seine Arbeit nicht

Antwort

5

Sie dies nicht tun benötigen Sie das Schlüsselwort VALUES beim Einfügen mit einer Unterabfrage.

INSERT INTO table3 (name,age) select table1.name , table2.age from table1 INNER JOIN table2 ON table1.name = table2.name 
-2

Falsche SQL: Es sollte

select table1.name , table2.age from table1 INNER JOIN table2 WHERE table1.name = t 
+0

Eigentlich ist 'ON' das Richtige. https://dev.mysql.com/doc/refman/5.0/en/join.html – Vache

+0

Seine ausgewählte Syntax sieht OK für mich aus. Dein funktioniert auch, aber ON-Klausel ist klarer – haltabush

+0

'ON' wird in' Join' verwendet, aber ich erinnere mich, dass es zwischen zwei Tabellen verwendet werden sollte. Zum Beispiel 'ON table1.category_id = table2.id'. Wenn die Bedingung nur in einer Tabelle ist, sollte "WHERE" verwendet werden. Zum Beispiel: SELECT p1.name, p2.name FROM tabelle1 p1 JOIN tabelle2 p2 ON p1.category_id = p2.id WHERE p1.id> 50' –

3

Remove "Werte" sein, es ist nicht needen, wenn Sie INSERT tun ... SELECT