基于另一个表的条件更新表
问题描述:
我想更新所有的列,其中post_type = product
和post_status = publish
。此外,我需要进行加入,因为我只想更新那些帖子,其中Count(...)
为0.基于另一个表的条件更新表
我想要计算meta meta_key LIKE "%product_shops_%_price%"
。
下面是表的两个例子:
wp441_posts:
| ID | post_status | post_type |
--------------------------------
| 1 | publish | product |
| 2 | darf | product |
| 3 | darf | product |
| 4 | publish | page |
| 5 | publish | page |
| 6 | publish | page |
--------------------------------
wp441_postmeta:
| meta_id | post_id | meta_key | met_value |
----------------------------------------------------------
| 1 | 1 | product_shops_0_price | 45.00
| 2 | 1 | product_shops_1_price | 25.00 |
| 3 | 1 | product_shops_2_price | 45.00 |
| 4 | 2 | thumbnail_url | https://..|
-----------------------------------------------------------
例如。在这两张表中,我只想将ID
1的post_status
设置为draft
,因为这是我的条件匹配的唯一帖子。我在wp441_postmeta表格中有更多product_shops_%_price
价格,我有一个帖子,目前在publish
,它是一个'产品'。
我已经修修补补的声明,但是这个人是无连接的时刻:
SELECT COUNT(meta_key) FROM `wp441_postmeta` WHERE meta_key LIKE "%product_shops_%_price%" GROUP BY (post_id)
现在我需要插入本声明的加入。但我不知道如何...有人可以帮我吗?
问候!
答
为您解释的情况下,更新wp441_posts.post_status
重视draft
其中:
post_type = 'product AND post_status = 'public'
- 和具有匹配
post_id
与wp441_postmeta.post_id
超过1列,其中meta_key LIKE '%product_shops_%_price%'
的声明是这样的:
UPDATE wp441_posts p
JOIN (
SELECT pm.post_id
FROM wp441_postmeta
WHERE meta_key LIKE '%product_shops_%_price%'
GROUP BY pm.post_id
HAVING COUNT(*) > 0
) pm
ON p.id = pm.post_id
SET post_status = 'draft'
WHERE pm.post_type = 'product' AND pm.post_status = 'publish'
我认为你的LIKE
应该与product_shops_%_price
比较,没有额外的%
签字在字符串的开始和结尾,但这是WordPress如何将值放在那里的具体内容。但请考虑一下。