我在下面的查询得到一个语法错误:MySQL的WHERE总是需要一台
SELECT 1,2 WHERE 1=1
但这查询工作正常:
SELECT 1,2 FROM (SELECT 1) t WHERE 1=1;
它几乎看起来像一个WHERE子句总是需要一个表。有时,在复杂查询的深度中,使用SELECT/WHERE组合打开和关闭某些功能是非常好的。有没有办法不总是添加FROM (SELECT 1) t
?
编辑:
我发现了另一个类似的问题
(SELECT 1 x)
UNION
(SELECT 2)
WHERE 1=1
给出了一个语法错误,但这并不:
SELECT x
FROM
(
(SELECT 1 x)
UNION
(SELECT 2)
) t
WHERE 1=1
我使用5.1.48-community MySQL Community Server (GPL)
。有没有人看到这个?
这是直接从[参考手册](http://dev.mysql.com/doc/refman/5.0/en/select.html),但注意它后面的行:“DUAL纯粹是为了方便需要所有SELECT语句应该有FROM和可能的其他子句的人,MySQL可能会忽略这些子句,如果没有引用表,MySQL不需要FROM DUAL。这表明你不需要“发表”声明。让我困惑的颜色。 – eykanal 2010-08-31 21:44:04
@eykanal:如果您要使用'WHERE' – Quassnoi 2010-08-31 21:44:58
@OMGPonies:而不是'PostgreSQL',则需要'FROM'子句。 – Quassnoi 2010-08-31 21:55:08