2012-09-13 25 views
2

我尝试使用下面的代码删除船表,并在另一个表相关的资格了“船”:删除在PHP/MySQL的两个表的记录

DELETE FROM tbl_boat, tbl_qualifications 
WHERE tbl_boat.BT_ID = '$bt_id' AND tbl_boat.BT_ID = tbl_qualifications.BT_ID; 

的问题是我收到以下错误:

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 'WHERE tbl_boat.BT_ID = 113 AND tbl_boat.BT_ID = tbl_ ' at line 2 .

感谢此任何帮助。

+1

可能是你可以通过这个得到的想法。 http://stackoverflow.com/questions/1339851/delete-rows-from-two-tables-in-one-query –

+0

你肯定这是否行得通呢? '... WHERE tbl_boat.BT_ID = '$ bt_id' AND tbl_boat.BT_ID = tbl_qualifications.BT_ID':这将只返回的'$ bt_id'和行'tbl_qualifications.BT_ID'是相同的... – Spontifixus

回答

0

您需要执行两个删除:

-- DELETE all associations first ...
DELETE FROM tbl_qualifications WHERE BT_ID = '$bt_id';

-- ... then delete the boat
DELETE FROM tbl_boat WHERE BT_ID = '$bt_id';

0

你可能想尝试INNER JOIN。

DELETE FROM tbl_boat 
INNER JOIN tbl_qualifications 
WHERE tbl_boat.BT_ID = '$bt_id' AND tbl_boat.BT_ID = tbl_qualifications.BT_ID; 

我还没有测试过这个,但我认为这会奏效。

+0

也许增加了一些更信息会使这个答案更有用。 A [链接](http://dev.mysql.com/doc/refman/5.0/en/delete.html)MySQL手册是比较好的,说明在多个表DELETE'如何'工作 – Yaroslav

0

你必须告诉MySQL如何在两个表相关:

DELETE tbl_boat, tbl_qualifications 
FROM 
    tbl_boat 
    INNER JOIN tbl_qualifications USING (BT_ID) 
WHERE 
    tbl_boat.BT_ID = '$bt_id' 
0

应该

DELETE tbl_boat, tbl_qualifications FROM tbl_boat, tbl_qualifications 
WHERE tbl_boat.BT_ID = '$bt_id' AND tbl_boat.BT_ID = tbl_qualifications.BT_ID; 

BTW采取看How to delete from multiple tables in MySQL?

+0

我尝试过,但这个不起作用。我收到相同的错误消息。 –

+0

它只有在我将它分解成两个删除语句并且只有在从船上执行资格删除之前执行时才有效。 –

0

这肯定会工作:

DELETE a.*, b.* 
FROM tbl_boat AS a 
INNER JOIN tbl_qualifications AS b 
    ON b.BT_ID = a.BT_ID 
WHERE tbl_boat.BT_ID = '$bt_id'; 

而且,如果BT_IDINTEGER类型,然后从各地$bt_id删除报价。

0

尝试这个

DELETE uploadfeat,postfeeds,postcomment FROM uploadfeat INNER JOIN postfeeds INNER JOIN postcomment 
WHERE uploadfeat.id=postfeeds.postID AND uploadfeat.id=postcomment.postID AND uploadfeat.id=23