Mod*_*ern 2 mysql sql sql-delete
假设我有一个产品表,并且只有 2 个字段;id 和购买日期。我想删除 2019 年购买的最后一个产品。我尝试使用以下查询来执行此操作:
DELETE FROM products
WHERE id = (SELECT id
FROM products
WHERE purchase_date LIKE '2019%'
ORDER BY purchase_date DESC
LIMIT 1);
Run Code Online (Sandbox Code Playgroud)
不幸的是,出现了标题中写的错误。我知道这个错误是一个已知错误,我已经尝试寻找解决方案。我已经查看了这里和这里,但是,我无法理解如何更改我的查询以使其正常工作。
我将很高兴获得帮助和解释。提前致谢。
尝试这个
\nDELETE FROM products\nWHERE id = (SELECT * FROM\n (SELECT id \n FROM products\n WHERE purchase_date LIKE '2019%'\n ORDER BY purchase_date DESC\n LIMIT 1)tblTmp);\nRun Code Online (Sandbox Code Playgroud)\n查询基本相同,只是内部 select 包含在另一个 select 中。\n最重要的是要注意的是,原始 select 已被赋予别名 \xe2\x80\x9ctblTmp\xe2\x80\x9c。(名称 tblTmp 是任意的,您可以给它任何别名。)\xc2\xa0\n别名很重要,因为分配别名将告诉 MySQL 从该选择查询创建临时表。\xc2\xa0\n临时表可能然后用作更新语句的源条件。\n\xc2\xa0\n它被包装在另一个查询中的原因是因为 MySQL 语法不允许您在选择查询是更新语句的一部分时为其分配别名.\xc2\xa0\n因此我们必须将其放入另一个查询中,我认为该查询将其与更新语句分开。
\n| 归档时间: |
|
| 查看次数: |
6036 次 |
| 最近记录: |