2013-02-24 49 views
1

我要問我們是否可以使用SQL函數內部子查詢(同時考慮組和單功能)。我一直在嘗試這個簡單的查詢 -SQL函數使用子查詢

select count(select empno from emp where sal<3000) from emp; 

它給錯誤「缺少的表達式」。這只是一個簡單的例子。

我只是想知道,如果這個查詢的邏輯是錯誤的,或者如果它不能在SQL不被允許的,我們可以使用SQL函數內部子查詢,請小心提到一個例子。

謝謝。

回答

1

您的查詢根本沒有意義。你爲什麼不這樣做?

select count(empno) from emp where sal<3000; 
+0

雖然查詢是愚蠢的,我認爲他試圖詢問是否'SELECT COUNT(子查詢)的概念'是可能的。 – Joe 2013-02-24 05:51:26

+0

@MattBall我想給這10個upvotes – Jeremy 2013-02-24 06:04:59

+0

我知道我可以使用這個查詢,而不是那個。但我用這個例子來讓人們明白我的問題是關於什麼的。簡而言之,我想知道我們是否可以在函數內部使用子查詢。 – Anu 2013-02-24 06:12:33

0

我認爲這是可能的。一個例子見http://www.akadia.com/services/sqlsrv_subqueries.html(找到頁面上的「DATEDIFF」來查看它)。但是,我不確定它可能適用於所有類型的SQL;例如,我使用了SAS,它有自己相當簡陋的SQL實現,並且它似乎不允許它。

0

即使你能夠使用子查詢將有基本上返回可評估,並通過記錄循環計數的表達式或列名。因此,您應該嘗試查看使用子查詢結果作爲查詢中的列或任何其他聯合組合來完成您的工作。

+0

這是正確的答案,但它令人混淆。子查詢返回結果集 - 實質上是另一種關係。一般來說,函數取值或列,而不是關係。如果您需要使用子查詢,請將其用作關係並將您的函數應用於該關係的適當部分。 – 2013-02-24 06:58:52

+0

@evilotto謝謝...... – Anu 2013-02-24 08:23:45