gpt4 book ai didi

mysql - 错误代码 : 1093. 您不能在 FROM 子句中指定要更新的目标表

转载 作者:行者123 更新时间:2023-12-02 01:45:56 25 4
gpt4 key购买 nike

假设我有一个产品表并且只有 2 个字段; ID 和购买日期。我想删除 2019 年购买的最后一个产品。我尝试使用以下查询来做到这一点:

DELETE FROM products
WHERE id = (SELECT id
FROM products
WHERE purchase_date LIKE '2019%'
ORDER BY purchase_date DESC
LIMIT 1);

不幸的是,出现了标题中所写的错误。我知道此错误是已知错误,我已尝试寻找解决方案。我看过herehere ,但是,我无法理解如何更改我的查询以使其正常工作。

我很乐意提供帮助和解释。提前致谢。

最佳答案

试试这个

DELETE FROM products
WHERE id = (SELECT * FROM
(SELECT id
FROM products
WHERE purchase_date LIKE '2019%'
ORDER BY purchase_date DESC
LIMIT 1)tblTmp);

查询基本相同,除了内部选择被另一个选择包裹。最重要的是要注意原始选择已被赋予别名“tblTmp”。 (名称 tblTmp 是任意的,您可以给它任何别名。)别名很重要,因为分配一个别名将告诉 MySQL 从这个选择查询创建一个临时表。然后可以将临时表用作更新语句的源标准。它包含在另一个查询中的原因是因为 MySQL 语法不允许您在选择查询作为更新语句的一部分时为其分配别名。所以我们必须将它放在另一个查询中,我想它将它与更新语句分开。

关于mysql - 错误代码 : 1093. 您不能在 FROM 子句中指定要更新的目标表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70903217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com