gpt4 book ai didi

mysql - 如何将我的选择 SQL 更改为更新 SQL?

转载 作者:行者123 更新时间:2023-11-29 22:08:16 24 4
gpt4 key购买 nike

我成功编写了以下 SQL,它为我提供了 _price、_regular_price 和 _sale_price 中具有相同值的所有记录。

我只需将这些记录上的 _sale_price 更新为“”(无/空)

这是我的工作选择:

SELECT p.id, p.post_title, p1.meta_key, p1.meta_value, p2.meta_key, p2.meta_value, p3.meta_key, p3.meta_value
FROM sm_posts p

INNER JOIN sm_postmeta p1 ON p.id = p1.post_id
AND p1.meta_key = '_price'

INNER JOIN sm_postmeta p2 ON p.id = p2.post_id
AND p2.meta_key = '_regular_price'

INNER JOIN sm_postmeta p3 ON p.id = p3.post_id
AND p3.meta_key = '_sale_price'

WHERE p1.meta_value = p2.meta_value AND p1.meta_value = p3.meta_value

我需要从中创建一个更新,但无法弄清楚。

到目前为止,我已经有了这个,但它不起作用:

UPDATE sm_postmeta2,
(
SELECT p.id, p.post_title, p1.meta_key, p1.meta_value, p2.meta_key, p2.meta_value, p3.meta_key, p3.meta_value
FROM sm_posts p
INNER JOIN sm_postmeta2 p1 ON p.id = p1.post_id
AND p1.meta_key = '_price'
INNER JOIN sm_postmeta2 p2 ON p.id = p2.post_id
AND p2.meta_key = '_regular_price'
INNER JOIN sm_postmeta2 p3 ON p.id = p3.post_id
AND p3.meta_key = '_sale_price'
WHERE p1.meta_value = p2.meta_value AND p1.meta_value = p3.meta_value
GROUP BY p1.ID
)
SET sm_postmeta2.meta_value = ''
WHERE sm_postmeta2.meta_value.id = p1.id

请有人帮忙,我是 SQL 新手,我花了很长时间才让连接正常工作。哈哈

感谢您花时间帮助我。

最佳答案

您的错误意味着您必须为子查询指定别名。但是,您不想将子查询放在 UPDATE 子句中。如果这样做,MySQL 要么不允许这样做,要么会更新子查询产生的临时表,即更改不会持久。相反,您可以在子查询上INNER JOIN来获取要更新的行。

由于您只是使用子查询来确定要更新的行,因此不需要像以前那样 SELECT 所有相同的值。相反,您只需SELECT您要更新的记录的主键即可。

这是一个例子:

UPDATE sm_postmeta2 INNER JOIN
(
SELECT DISTINCT p3.meta_id
FROM sm_posts p
INNER JOIN sm_postmeta2 p1 ON p.id = p1.post_id
AND p1.meta_key = '_price'
INNER JOIN sm_postmeta2 p2 ON p.id = p2.post_id
AND p2.meta_key = '_regular_price'
INNER JOIN sm_postmeta2 p3 ON p.id = p3.post_id
AND p3.meta_key = '_sale_price'
WHERE p1.meta_value = p2.meta_value AND p1.meta_value = p3.meta_value
) p_tmp ON sm_postmeta2.meta_id = p_tmp.meta_id
SET sm_postmeta2.meta_value = ''

关于mysql - 如何将我的选择 SQL 更改为更新 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954135/

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