2016-09-15 43 views
0

我不知道爲什麼這段代碼不起作用。拋出語法錯誤,但據我所知,這應該工作。有人可以向我解釋我做錯了什麼嗎?SQL關聯實體的語法錯誤

insert into playerteam(playerId, teamId) select id from player where 
    player.firstname='John' and select id from team where team.`name`='Swim Team'; 
+2

你應該看看如何使用插入語句的子查詢 - 你的查詢格式是完全錯誤的... – Alex

+0

我明白我出錯了,我沒有正確嵌套,並通過where子句運行查詢。我仍然對此感到陌生,但感謝您的反饋。 – remedy

回答

2

用途:

INSERT INTO playerteam(playerId, teamId) 
SELECT (SELECT id FROM player WHERE player.firstname='John'), 
    (SELECT id FROM team WHERE team.`name`='Swim Team'); 
+0

完美工作,感謝您的反饋。我沒有注意where子句。還是一個noob here XD – remedy

1

此:

player.firstname='John' and select id from team where team.`name`='Swim Team'; 
        ^^^^^^^^^ 

你不能只返回整個查詢結果作爲where條款。你必須以某種方式測試結果,例如下面給出

... AND EXISTS select ... 
     ^^^^ 
+0

@Suraz的解決方案實際上爲我工作,感謝您的反饋,我會考慮到存在也! – remedy

1

select查詢不正確─你不能使用select ... AND select ...組合兩個查詢,則需要使用join

例如(但您需要在此添加用於連接的ON部分,以連接兩個表格):

insert into playerteam(playerId, teamId) select player.id as playerId, 
    team.id as teamId from player inner join team on {ADD HERE COLUMNS TO JOIN BY} 
where player.firstname='John' and team.`name`='Swim Team'; 
+0

是的,謝謝,我得到它的工作。我相信這個解決方案需要做更多的工作,然後再爲我所要做的事情做好準備,但是再次感謝您的反饋。 – remedy