【问题标题】:DELETE statement with ALIAS and LIMIT带有 ALIAS 和 LIMIT 的 DELETE 语句
【发布时间】:2015-02-26 20:44:48
【问题描述】:

this question 非常相似,只是干净利落。

目标:

我需要使用带有 ALIAS 和 LIMIT 的 DELETE 语句。可以选择使用 USING、WHERE 或其他任何其他解决方法,只要它有效。

案例 4、6、7、8 可能是这个问题的解决方案,但它们每个都返回一个错误。

示例 1、2、3 和 5 仅用于本示例(如果您愿意,可以填充矩阵)。

架构:

CREATE TABLE test (id int(10));
INSERT INTO test VALUES (1), (2), (3);

1) 没有别名,没有限制 - 工作

DELETE FROM test;

2) 没有别名,限制 - WORKS

DELETE FROM test LIMIT 1;

3) 别名,无限制 - ERROR

DELETE FROM test t;

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“t”附近使用正确的语法

4) 别名,限制(将是 SOLUTION)- 错误

DELETE FROM test t LIMIT 1;

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“t LIMIT 1”附近使用正确的语法

5) 别名+使用,没有限制 - WORKS

DELETE FROM t USING test t;

6) 别名+USING,限制(将是解决方案)- 错误

DELETE FROM t USING test t LIMIT 1;

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“LIMIT 1”附近使用正确的语法

7) 别名、限制、哪里(应该是 SOLUTION)- 错误

DELETE FROM test t WHERE 1=1 LIMIT 1;

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“t WHERE 1=1 LIMIT 1”附近使用正确的语法

8) alias+USING, limit, where (would be SOLUTION) - ERROR

DELETE FROM t USING test t WHERE 1=1 LIMIT 1;

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“LIMIT 1”附近使用正确的语法

【问题讨论】:

  • 尝试:DELETE FROM t USING test t where 2=2 LIMIT 1;
  • DELETE t FROM test t...
  • @EJP 不,不是。 OP的问题在于USING关键字
  • @i486 您的建议已在问题中提及。它可以通过使用 EngineerCoder 建议的技巧来工作。 DELETE t FROM test t where 1=1 limit 1;

标签: mysql


【解决方案1】:

那么这个呢:

DELETE FROM t USING test t INNER JOIN (SELECT id FROM test LIMIT 1) t2 ON t.id = t2.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多