首页 > 解决方案 > 需要帮助识别第 20 行的语法错误

问题描述

分贝小提琴

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 'DELETE FROM wp_postmeta WHERE post_id IN (select post_id from (SELECT pm.post' at line 20) 附近使用

-- 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_postmeta.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
)

-- Deleting all corresponding wp_postmeta.post_ids that don't have a match in wp_posts.id after the duplicate deletion above

DELETE FROM wp_postmeta WHERE post_id IN (select post_id from (
  SELECT pm.post_id 
  FROM
    wp_postmeta pm
    LEFT JOIN 
    wp_posts p
    ON p.id = pm.post_id
  WHERE
    p.id IS NULL

) AS aliasy )

在 MYPHPAdmin 我得到这个:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(partition by post_title order by wp_postmeta.meta_value) rn ' at line 5

在在线验证器https://www.eversql.com/sql-syntax-check-validator/ 我得到这个:

您的 SQL 语法有错误;似乎错误就在附近:'(第 21 行的 post_title order by 分区

似乎是一大堆不同的错误,具体取决于我运行查询的位置。

标签: mysqlsql

解决方案


推荐阅读