我在下面的查詢得到一個語法錯誤: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