2010-08-20 54 views
0
DELETE FROM Books INNER JOIN (Classes, Class_Books) ON (Books.ISBN = Class_Books.ISBN AND Class_Books.Class_ID = Classes.Class_ID AND Classes.Term_ID = 63) WHERE Year = '""' 

给出错误:#1064 - 您的SQL语法错误;DELETE JOIN的问题

与SELECT更换出现删除它工作得很好,虽然

+0

http://dev.mysql.com/doc/refman/5.5/en/delete.html – 2010-08-20 08:23:59

回答

1

尝试以下,这将有删除图书记录Classes.Term_ID = 63

DELETE b FROM Books b 
    INNER JOIN Class_Books cb ON b.ISBN = cb.ISBN 
    INNER JOIN Classes c ON cb.Class_ID = c.Class_ID 
WHERE Year = '""' 
    AND c.Term_ID = 63 
+0

此查询超时某人的原因(用SELECT替换DELETE *它不通过) – babonk 2010-08-20 08:30:22

+0

其实它看起来像整个查询现在是超时..所以我打算找出一般问题,然后回复.. – babonk 2010-08-20 08:47:27

1

在SQL中,你说

DELETE FROM 

DELETE * FROM 

即使它

SELECT * FROM 
+0

谢谢你,修复它 – babonk 2010-08-20 08:34:19

+0

由“它'我的意思是这个问题..错误仍然存​​在 – babonk 2010-08-20 09:04:32

1
DELETE FROM Books 
WHERE ISBN IN (Select Class_Books.ISBN from Class_Books, Classes 
       WHERE Class_Books.Class_ID = Classes.Class_ID 
       AND Classes.Term_ID = 63 
      ) 
AND Year = '""' 
+0

这个查询超时出于某种原因,即使用SELECT替换DELETE *它不.. – babonk 2010-08-20 08:33:25

+0

@babonk,子查询也超时吗? – 2010-08-20 08:40:34

+0

子查询超时 – babonk 2010-08-20 08:45:32