php - MySQL不允许我删除记录
问题描述
我正在尝试从 PHP 中执行此 MySQL 子句
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "DELETE FROM table_2 WHERE id in (select DISTINCT(id) FROM table_2 WHERE id NOT IN (SELECT id FROM table_2 WHERE p = 1 AND r =1))";
if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " . $conn->error;
}
我收到以下错误
删除记录时出错:您不能在 FROM 子句中指定目标表 'table_2' 进行更新
我究竟做错了什么?
解决方案
您可以使用子查询绕过 MySQL 的此限制,但您的语句可以简化如下:
DELETE FROM table_2
WHERE id NOT IN (
SELECT id FROM (
SELECT id FROM table_2 WHERE p = 1 AND r = 1
) t
)
推荐阅读
- c++ - 如何在 VSCode 上使用`launch.json` 来制作运行 C++ 程序的快捷方式?
- javascript - 按日期范围过滤数组
- reactjs - 打字稿中文档的KeyDown EventHandler反应
- ms-access - 访问计算字段 if 语句
- java - Java 泛型 - 不适用于参数
- android - 如何从 WebKit Cookiemanager cookie 中获取过期/持久性?
- flutter - 无法以可靠的 null 安全性运行,因为以下依赖项不支持 null 安全性
- python - 无法使用基于 python 的库 ftplib 连接到本地 FTP 服务器
- java - 无法连接到 postgres Scala slick org.postgresql.util.PSQLException:连接尝试失败
- javascript - 如何使用 html-webpack-plugin 在我的 webpack 模板 html 中包含脚本标签