【问题标题】:MySQL DELETE FROM ASMySQL 从 AS 中删除
【发布时间】:2015-10-07 21:55:27
【问题描述】:

我正在尝试从可以通过此查询选择的表中删除某种重复项:

SELECT * 
  FROM `articles` AS t1 
 WHERE EXISTS (
                SELECT `id` 
                  FROM articles AS t2 
                 WHERE t2.link = t1.link AND 
                       t2.id > t1.id
               );

所以我尝试了这两个查询,但它们似乎也不起作用:

DELETE FROM `articles` AS t1 
WHERE EXISTS (
              SELECT `id` FROM articles AS t2 
               WHERE t2.link = t1.link AND 
                     t2.id > t1.id
              );

&

DELETE FROM t1 USING `articles` AS t1 
WHERE EXISTS (
              SELECT `id` 
                FROM `articles` AS t2 
               WHERE t2.link = t1.link AND 
                     t2.id > t1.id
              );

两者都返回语法错误。

【问题讨论】:

  • #1093 - 您不能在 FROM 子句中指定目标表 't1' 进行更新

标签: mysql sql duplicate-removal sql-delete


【解决方案1】:

您可以在 from 子句中使用多个表:

DELETE t1
FROM   `articles` t1 , `articles` t2
WHERE  t2.link = t1.link AND t2.id > t1.id

【讨论】:

    【解决方案2】:
    delete
    from articles using articles,
        articles a1
    where articles.id > a1.id
        and articles.link = a1.link
    

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 2016-11-06
      • 2015-02-22
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多