我想写一个查询:
- 尽可能短
- 对 MySQL 服务器语法正确
- 使服务器在执行时返回错误
我目前的解决方案是:
CREATE TABLE FOO (i INT);
INSERT INTO FOO VALUES (1);
INSERT INTO FOO VALUES (2);
SELECT 1 FROM FOO WHERE 1 = (SELECT i FROM FOO);
但是我不喜欢它——它太长了。
CREATE TABLE FOO (i INT);
CREATE TABLE FOO (i INT);
它不会接受创建表,因为它在第一个语句之后已经存在。
以下是一些“正确”但会失败的简短查询
SELECT *
SELECT 1e333
SELECT i FROM(SELECT 1i,1i)
详细版本是
SELECT * FROM DUAL
SELECT 1e333 FROM DUAL
SELECT i FROM (SELECT 1 as i, 1 as i FROM DUAL)
他们失败的原因不同:
1) DUAL 没有任何列。
2) 1e333 不适合浮点数。
3) 内部查询返回具有两个相同命名列的表。因此,外部查询不允许指定此列名。