mysql - 通过使用 join 语句的查询删除行

标签 mysql sql sql-delete

我有一个选择查询来检查重复项。

select ID, post_id, post_name, post_date, Count(meta_value) FROM wp_yepf_posts p join wp_yepf_postmeta pm on p.ID = pm.post_id WHERE p.post_type = 'product' and pm.meta_key='_sku'  group by meta_value having count(meta_value)>1 

这将返回 2458 条记录,其中 count(meta_value) 大于 1 - 我需要删除这些记录(如果可能的话,保留一份记录副本),但每次我尝试这样的删除查询时,我都会收到错误

delete p 
FROM wp_yepf_posts p 
join wp_yepf_postmeta pm on p.ID = pm.post_id (select DUPLICATE.entity_id in (Select DISTINCT(pm.meta_key='_sku') as sku, Count(pm.meta_key='_sku') as skuCount, entity_id
from wp_yepf_posts p join wp_yepf_postmeta pm on p.ID = pm.post_id 
group by sku Having skucount>1) as dup)

错误是

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select DUPLICATE.entity_id in (Select DISTINCT(pm.meta_key='_sku') as sku, Count' at line 1

最佳答案

我想你只是错过了一个运算符(operator):

删除p 来自 wp_yepf_posts p 加入 wp_yepf_postmeta pm on p.ID = pm.post_id AND (在 (Select DISTINCT(pm.meta_key='_sku') as sku, Count(pm.meta_key='_sku') 中选择 DUPLICATE.entity_id作为 skuCount、entity_id 来自 wp_yepf_posts p 加入 wp_yepf_postmeta pm on p.ID = pm.post_id 按 sku 分组 skucount>1) 作为 dup)

关于mysql - 通过使用 join 语句的查询删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704603/

相关文章:

php - MYSQL 多表删除,其中一个表不包含行

postgresql - 在 postgresql 中恢复已删除的行

php - 一个不工作的 mysql 删除查询。为什么?

sql - 如何在 SQL 中删除多行,其中 id = (x to y)

php - MySQL数据库存储图片url和php页面显示吗?

mysql - 在更新触发后检查值是否在 MySQl 中更新

php - 根据特定条件运行 SQL 查询并仅删除 x 行?

sql - 选择除以 2 后余数(模数)为 1 的行?

sql - 使用 DateDim 连接值,其中空日期值将采用表中最后一个非空值

sql - 将 INSERT IGNORE 转换为 Postgres INSERT