2013-02-24 104 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