繁体   English   中英

从php / mysql中的两个表中删除一条记录

[英]delete a record from two tables in 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-您的SQL语法有误; 在第2行的'WHERE tbl_boat.BT_ID = 113 AND tbl_boat.BT_ID = tbl_ ”附近,查看与您的MySQL服务器版本相对应的手册以使用正确的语法。

感谢对此的任何帮助。

您可能想尝试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;

我尚未对此进行测试,但我认为这会起作用。

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

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

您需要执行两个删除操作:

-首先删除所有关联...
从tbl_qualifications删除,其中BT_ID ='$ bt_id';

-...然后删除船
从tbl_boat删除,其中BT_ID ='$ bt_id';

它应该是

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看看如何在MySQL中从多个表中删除?

这肯定会起作用:

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周围删除引号。

尝试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM