MySQL WHERE总是需要一个表

时间:2010-08-31 21:37:12

标签: sql mysql

我在以下查询中遇到语法错误:

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)。还有其他人看到这个吗?

2 个答案:

答案 0 :(得分:1)

您可以使用“FROM DUAL”来表示您不是从表中选择。如:

SELECT 'Hello, World' FROM DUAL;

答案 1 :(得分:0)

此:

SELECT  1 x
UNION
SELECT  2
WHERE   1 = 1

是两个查询,与UNION结合使用。第二个问题:

SELECT  2
WHERE   1 = 1

无效,因为它在使用FROM时错过了WHERE子句。

此:

SELECT  x
FROM    (
        SELECT 1 x
        UNION
        SELECT 2
        ) t
WHERE   1 = 1

是内嵌视图中的SELECT,同样是两个查询与UNION相结合。

这两个查询都没有使用WHERE,因此他们没有FROM就可以了。两个查询都有效,结果查询也是如此。