2011-02-18 63 views
5
DELETE FROM programSchedule 
LEFT JOIN program ON programSchedule.pid = program.id 
WHERE program.channel_id = 10 

我得到这个错误:错误查询:DELETE和LEFT JOIN

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN program ON programSchedule.pid = program.id' at line 1

为什么?

回答

8

您需要指定要从哪个表中删除。

DELETE programSchedule.* 
FROM programSchedule LEFT JOIN program ON programSchedule.pid = program.id 
WHERE program.channel_id = 10 

注:更改连接到INNER JOIN因为你是program.channel_id

DELETE programSchedule.* 
FROM programSchedule INNER JOIN program ON programSchedule.pid = program.id 
WHERE program.channel_id = 10 
+0

注意:如果你想从** **两表删除,你可以先创建一个临时表做到这一点。请张贴您的表格定义。 – 2011-02-18 22:27:12

2

因为两个表所涉及的过滤,你需要说你想从一个表删除。因此,为了删除programSchedule表中的行,你可以这样做:

DELETE programSchedule.* 
FROM programSchedule 
LEFT JOIN program ON programSchedule.pid = program.id 
WHERE program.channel_id = 10