mysql - SQL 根据不同行中的值更改 id 的另一行
问题描述
我是 SQL 新手,正在尝试创建一个执行以下操作的命令:
如果 _stripe_customer_id = cus_1 则对于该 post_ID,设置 _requires_manual_renewal = true 并将 _payment_method 设置为 BLANK 并将 _payment_method_title 设置为 BLANK。
我知道我需要做什么,但不熟悉实现它的命令。
这是我的表的示例(wp_postmeta)
+-------+-------+-------------------------+------------+
|meta_id|post_id| meta_key | meta_value |
+-------+-------+-------------------------+------------+
| 1 | 11221 | _stripe_customer_id | cus_1 |
+-------+-------+-------------------------+------------+
| 2 | 11221 |_requires_manual_renewal | false |
+-------+-------+-------------------------+------------+
| 3 | 11221 | _payment_method | stripe |
+-------+-------+-------------------------+------------+
| 4 | 11221 | _payment_method_title | stripe |
+-------+-------+-------------------------+------------+
| 5 | 11223 | _stripe_customer_id | cus_1 |
+-------+-------+-------------------------+------------+
| 6 | 11223 |_requires_manual_renewal | false |
+-------+-------+-------------------------+------------+
| 7 | 11223 | _payment_method | stripe |
+-------+-------+-------------------------+------------+
| 8 | 11223 | _payment_method_title | stripe |
+-------+-------+-------------------------+------------+
| 9 | 11225 | _stripe_customer_id | |
+-------+-------+-------------------------+------------+
| 10 | 11225 |_requires_manual_renewal | true |
+-------+-------+-------------------------+------------+
| 11 | 11225 | _payment_method | |
+-------+-------+-------------------------+------------+
| 12 | 11225 | _payment_method_title | |
+-------+-------+-------------------------+------------+
感谢您提供的任何帮助或指导!
解决方案
您必须制作 2 条 SQL 语句
UPDATE wp_postmeta
SET 'meta_value' = true
WHERE meta_key ='_requires_manual_renewal'
AND post_id IN
(
SELECT post_id
FROM wp_postmeta
WHERE meta_key ='_stripe_customer_id'
AND meta_value='cus_1'
)
;
UPDATE wp_postmeta
SET 'meta_value' = ''
WHERE meta_key IN ('_payment_method', '_payment_method_title')
AND post_id IN
(
SELECT post_id
FROM wp_postmeta
WHERE meta_key ='_stripe_customer_id'
AND meta_value='cus_1'
)
;