gpt4 book ai didi

mysql - 如何修复具有指定表两次错误的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 10:24:58 26 4
gpt4 key购买 nike

我有这个查询:

SELECT *
FROM `wp_postmeta`
WHERE `meta_key` = '_test'
AND `post_id` IN (SELECT post_id FROM `wp_postmeta`
where meta_value = 8023)

返回 SQL 错误:

Table 'wp_postmeta' is specified twice, both as a target for 'UPDATE' and as a separate source for data

我已阅读其他答案并尝试在子查询周围添加进一步的 SELECT * FROM () 但没有帮助。

我假设我需要某种形式的 AS 在这里,但无法弄清楚确切的代码。

您能否以不会触发错误的格式重写查询?

对于这个类似的查询也是如此:

UPDATE wp_postmeta
SET meta_value = 5.55
WHERE meta_key = '_regular_price'
AND post_id IN (
SELECT post_id
FROM wp_postmeta
WHERE meta_value = 8023
)`

最佳答案

您可以使用表名的别名
(并且根据您的情况建议,您也可以使用 join 而不是 in )

  SELECT a.*
FROM `wp_postmeta` a
inner join `wp_postmeta` b on a.`post_id = b.post_id
where a.`meta_key` = '_test'
and b.meta_value = 8023

在更新中,您可以使用带有子选择的联接来规避由于同一表上的更新操作而产生的限制

  UPDATE wp_postmeta a
inner join (
SELECT post_id
FROM wp_postmeta
WHERE meta_value = 8023
) t on a.`post_id = t.post_id and a.`meta_key` = '_test'
SET meta_value = 5.55

关于mysql - 如何修复具有指定表两次错误的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48484285/

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