首页 > 解决方案 > 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  |            |
+-------+-------+-------------------------+------------+

感谢您提供的任何帮助或指导!

标签: mysql

解决方案


您必须制作 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'
        )           
;

推荐阅读