Mysql 基于另一个具有条件的表更新表
我想更新所有列,其中Mysql 基于另一个具有条件的表更新表,mysql,sql,join,Mysql,Sql,Join,我想更新所有列,其中post\u type=product和post\u status=publish。此外,我需要加入,因为我只想更新那些帖子,其中计数(…)为0 我想计算metameta\u键,如“%product\u shops\u%\u price%” 以下是两个表格示例: wp441_员额: | ID | post_status | post_type | -------------------------------- | 1 | publish | product |
post\u type=product
和post\u status=publish
。此外,我需要加入,因为我只想更新那些帖子,其中计数(…)
为0
我想计算metameta\u键,如“%product\u shops\u%\u price%”
以下是两个表格示例:
wp441_员额:
| ID | post_status | post_type |
--------------------------------
| 1 | publish | product |
| 2 | darf | product |
| 3 | darf | product |
| 4 | publish | page |
| 5 | publish | page |
| 6 | publish | page |
--------------------------------
wp441_邮递时间:
| 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\u状态设置为draft
,因为这是我的条件匹配的唯一post。在wp441\u Posteta表中,我有超过0个product\u shops\u%\u price
prices,我有一个帖子现在在publish
上,它是一个“产品”
我已经修改了一个声明,但目前还没有加入:
SELECT COUNT(meta_key) FROM `wp441_postmeta` WHERE meta_key LIKE "%product_shops_%_price%" GROUP BY (post_id)
现在我需要在这个语句中插入join。但是我不知道怎么。。。谁能帮帮我吗
你好 为您解释的案例更新wp441\u帖子。帖子状态
为valuedraft
其中:
post\u类型='产品和post\u状态='公共'
- 并将
post\u id
与wp441\u postmeta.post\u id
匹配,post\u id
具有多行meta\u键,如“%product\u shops%\u 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
应该与产品\u商店\u%\u价格
进行比较,而不需要在字符串的开头和结尾添加%
符号,但这取决于WordPress如何在其中输入值。尽管考虑一下。