【发布时间】:2019-02-06 18:18:43
【问题描述】:
on db Fiddle 下面的代码在 MariaDB 10.1 上运行时给出:
错误:
您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 'DELETE pm FROM wp_postmeta pm WHERE post_id IN (SELECT post_id ' 在第 26 行
查询:
-- Block 1: Deleting all duplicate products in wp_posts table
DELETE FROM wp_posts
WHERE id IN (SELECT id
FROM (SELECT id,
post_title,
post_type,
meta_value
FROM (SELECT wp_posts.id,
wp_postmeta.post_id,
post_title,
post_type,
meta_value,
Row_number()
OVER(
partition BY post_title
ORDER BY wp_postmeta.meta_value) rn
FROM wp_postmeta
JOIN wp_posts
ON wp_postmeta.post_id = wp_posts.id
WHERE wp_posts.post_type = 'Product'
AND wp_postmeta.meta_key = '_regular_price'
) t
WHERE t.rn <> 1) AS aliasx);
-- Block 2: Deleting all corresponding wp_postmeta.post_ids that don't have a match in wp_posts.id after the duplicate deletion above
DELETE pm
FROM wp_postmeta pm
WHERE post_id IN (SELECT post_id
FROM (SELECT post_id
FROM wp_postmeta pm
LEFT JOIN wp_posts p
ON p.id = pm.post_id
WHERE p.id IS NULL
AND p.post_type = "product") i)
如何纠正这个错误?我注意到第一个和第二个代码块单独输入时不会出现错误,但是一起输入时会出现此错误...
【问题讨论】: