不使用聚合函数 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 的最小值 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章