[英]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_ID
是INTEGER
类型,则从$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.