2

我正在尝试使用以下代码从船表中删除“船”以及另一个表中的相关资格:

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

问题是我收到以下错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取'WHERE tbl_boat.BT_ID = 113 AND tbl_boat.BT_ID = tbl_在第 2 行的 ' 附近使用的正确语法。

感谢您对此的任何帮助。

4

6 回答 6

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;

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

于 2012-09-13T13:14:40.173 回答
0

你必须告诉 MySQL 这两个表是如何关联的:

DELETE tbl_boat, tbl_qualifications
FROM
    tbl_boat
    INNER JOIN tbl_qualifications USING (BT_ID)
WHERE
    tbl_boat.BT_ID = '$bt_id'
于 2012-09-13T13:15:03.217 回答
0

您需要执行两个删除:

-- 首先删除所有关联 ...
DELETE FROM tbl_qualifications WHERE BT_ID = '$bt_id';

-- ... 然后删除船
DELETE FROM tbl_boat WHERE BT_ID = '$bt_id';

于 2012-09-13T13:15:28.653 回答
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;

顺便看看如何从 MySQL 中的多个表中删除?

于 2012-09-13T13:16:04.130 回答
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_IDisINTEGER类型,则从 around 中删除引号$bt_id

于 2012-09-13T13:23:37.307 回答
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
于 2014-03-10T16:17:41.710 回答