SQL中,假設我需要引用having子句中的別名字段,但別名引號,我該怎麼做?SQL別名字段
select (select...) as '005'
group by ...
having '005'>0
SQL中,假設我需要引用having子句中的別名字段,但別名引號,我該怎麼做?SQL別名字段
select (select...) as '005'
group by ...
having '005'>0
我認爲你缺少FROM子句,你應該使用反引號,而不是單引號:
SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0
這將有助於如果您發佈完整的查詢,因爲我在這裏猜測了一下至於你想要做什麼。
正如Mark所說,問題在於您使用的是單引號而不是反引號,這會將別名視爲字符串文字。在選擇部分中,別名可以使用普通引號,但在其他任何地方使用時,您需要使用後面的引號。 – 2010-06-05 00:18:58
你們是對的,如果我使用反引號而不是單引號別名工作!,謝謝 – user157195 2010-06-05 00:24:13
SQL-92標準定義了對列別名使用雙引號而不是單引號。在大多數數據庫中,只有使用雙引號時才允許出現不尋常的字符。
也就是說,並非所有數據庫都支持在GROUP BY
或HAVING
子句中引用列別名(在同一查詢中)。對於便攜式查詢,我不建議參考GROUP BY
或HAVING
子句中的列別名。此外,HAVING
子句用於聚合 - 您提供的簡化示例應該會觸發錯誤,因爲在005
列別名上不執行聚合函數(IE:COUNT,AVG,MIN/MAX等)。
以下關於MySQL 4.1的作品對我來說:
SELECT COUNT(*) AS "005"
FROM TABLE t
GROUP BY ...
HAVING `005` > 0
什麼數據庫類型? – 2010-06-04 23:59:53
數據庫類型爲MYSQL – user157195 2010-06-05 00:05:16