2016-08-05 6 views
0

existieren würde ich versuche Einsatz mit mehrere Anweisung mit dem folgenden Codemit mehrer Select-Anweisung Einfügen, wenn nicht

insert into peoplePos 
select a.name,b.option 
FROM (SELECT name from people t1) a 
JOIN (SELECT option FROM optionTable WHERE name = 'Position') b 
where not exists (select * from peoplePos t2 where t2.name = t1.name); 

Jedoch habe ich diesen Fehler

Fehlercode: 1054 Unknown column ‚t1 .name‘in 'where clause'

Es scheint in der where-Klausel, t1 kippe Zugang der Menschen t1 früher erklärt

ich versucht hatte, a.t1.name und people.name verwenden, wird beide arbeiten nicht

Gibt es weg auf ihn zugreifen? Danke

+0

zitiert mysql Dokumentation ** Standard SQL nicht zulässt, Verweise auf Spaltenaliasnamen in einer Klausel WHERE ** –

+0

Aber "a" ist eine Sub-Abfrage alias. Es scheint jetzt für ihn zu arbeiten. – AntDC

+0

ja, mit wo 't2.name = a.name' funktioniert – nicker

Antwort

1

Ich würde denken, dass Sie einige Bedingungen auf Ihrem Beitritt wollen, aber für was Sie fragen, t1 existiert nicht. Sie haben es als Alias ​​verwendet, also verwenden Sie a.

insert into peoplePos 
    select a.name,b.option 
    FROM (SELECT name from people t1) a 
    JOIN (SELECT option FROM optionTable WHERE name = 'Position') b ON "SOME CONDITION OR OTHER" 
    where not exists (select * from peoplePos t2 where t2.name = a.name); 
+0

Hallo, Vielen Dank, Problem gelöst. Danke, dass du auf den Join gedeutet hast, aber ich habe nicht vorgehabt, irgendeine Bedingung zu setzen, die ich 'Join' verwende, weil ich' '' nicht in peoplePos einfügen kann, wähle Namen von Leuten, wähle Option von OptionTable' – nicker

Verwandte Themen