【发布时间】:2020-07-21 18:51:51
【问题描述】:
我有以下 SQL 查询:
SELECT wp_posts.* , wicl_translations.*
FROM wp_posts wp_posts join wp_icl_translations wicl_translations
ON (wicl_translations.element_id = wp_posts.ID)
WHERE (wicl_translations.language_code = 'es-es'
AND wicl_translations.element_type ='post_product'
AND wp_posts.post_type = 'product' ) GROUP BY wp_posts.ID
这会返回我需要从数据库中删除的所有结果,因此我尝试了几个 DELETE 查询,但都出现了语法错误。
例子:
DELETE FROM wp_posts
WHERE (
SELECT wp_posts.* , wicl_translations.*
FROM wp_posts wp_posts join wp_icl_translations wicl_translations
ON (wicl_translations.element_id = wp_posts.ID)
WHERE (wicl_translations.language_code = 'pt-pt'
AND wicl_translations.element_type ='post_product'
AND wp_posts.post_type = 'product' ) GROUP BY wp_posts.ID
)
);
也试过这个:
DELETE FROM wp_posts WHERE wp_posts.ID = ANY IN (
SELECT wp_posts.ID, wicl_translations.*
FROM wp_posts wp_posts join wp_icl_translations wicl_translations
ON (wicl_translations.element_id = wp_posts.ID)
WHERE (wicl_translations.language_code = 'es-es'
AND wicl_translations.element_type ='post_product'
AND wp_posts.post_type = 'product' ) GROUP BY wp_posts.ID
)
这是一个复杂的聚合查询,我缺乏 mysql 知识来正确编写删除这些结果的规则。
我该如何处理?
谢谢
【问题讨论】:
-
嗨有趣,也许这个语法会很有趣stackoverflow.com/questions/4562787/…
-
@IronMan 谢谢,我实际上也尝试过,但我可能做错了什么,无法找出正确的语法。这是一个很长的查询!
-
好吧,你的 where 子句没有任何意义,因为复杂的子查询只返回一堆记录,但没有关于应该删除哪些记录的标准
-
@Shadow 我想我已经说得很清楚了,我想删除我的所有查询结果?
-
是的,你对我和其他人说得很清楚,但对 mysql 没有。 where 子句需要为每条记录计算一个真/假结果,否则 mysql 将不知道要包含哪些行。
标签: mysql sql-delete