不使用聚合函数 SQL 的最小值 [关闭]

Posted

技术标签:

【中文标题】不使用聚合函数 SQL 的最小值 [关闭]【英文标题】:Minimum value without using aggregate functions SQL [closed] 【发布时间】:2021-03-09 17:31:29 【问题描述】:

我有 2 张桌子:t1(id, ticket)t2(id, value)

我想从 t1 中选择 t2最小值的票/em> 不使用聚合函数(MIN)。我必须使用 ANY 或 ALL 或 EXIST 或 IN。值是一个数字。

这两个表是根据 id 链接的。

有人可以帮助我吗?谢谢!!

SELECT ticket 
  FROM t1
 WHERE id= (SELECT id FROM t2);

【问题讨论】:

“不使用聚合函数”是什么意思?为什么? 另外...该帖子被标记为 mysql 和 Oracle。你两个都用吗?只有其中之一?两者都不?请编辑标签(在您的帖子下)并仅保留相关标签。 Oracle 还是 MySQL 是哪一个?这是两种截然不同的动物。 当你说“t2 中的最小值”时,什么是“值” 此外,您最好分享一些示例输入和所需输出,以帮助问题更易于理解。 【参考方案1】:

如果数据库是Oracle10g+或MySQL8+,可以使用DENSE_RANK()等解析函数

 SELECT ticket
   FROM
   (
   SELECT t1.*, DENSE_RANK() OVER (PARTITION BY t2.ID ORDER BY t2.VALUE) AS dr  
     FROM t1
     JOIN t2 
       ON t2.id = t1.ID
    )
   WHERE dr = 1;

【讨论】:

【参考方案2】:

这样就可以了:

select t1.tickets from t1,t2 
where t1.id-t2.id and t1.id in (select id from t2 where 
value in (select min(value) from t2));

【讨论】:

以上是关于不使用聚合函数 SQL 的最小值 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中找到没有聚合函数的最小值?

sql server中啥是聚合函数

sql 2005 聚合函数

Sql Service的艺术 SQL聚合函数的应用

SqlServer函数的聚合函数

SQL聚合函数