使用ALIAS和LIMIT的DELETE语句

时间:2015-02-26 20:44:49

标签: mysql

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)没有别名,没有限制 - WORKS

DELETE FROM test;

2)没有别名,限制 - WORKS

DELETE FROM test LIMIT 1;

3)别名,无限制 - ERROR

DELETE FROM test t;

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

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

DELETE FROM test t LIMIT 1;

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

5)别名+ USING,无限制 - WORKS

DELETE FROM t USING test t;

6)alias + USING,limit(将是SOLUTION) - ERROR

DELETE FROM t USING test t LIMIT 1;

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

7)alias,limit,where(将是SOLUTION) - ERROR

DELETE FROM test t WHERE 1=1 LIMIT 1;

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

8)别名+ USING,limit,where(将是SOLUTION) - ERROR

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

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

1 个答案:

答案 0 :(得分:1)

那是怎么回事:

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