gpt4 book ai didi

sql - 如何用 "group by"子句替换 "having"的嵌套选择?

转载 作者:行者123 更新时间:2023-12-03 17:10:54 24 4
gpt4 key购买 nike

我的 SQL 变得有些生疏,这是我设法从表中检索最新记录的 ids 的唯一方法(基于 日期 字段)嵌套选择具有相同的类型,但我怀疑必须有一种方法可以使用having子句或更有效的方式执行相同的操作。

假设唯一的列是 IDTYPEDATE,我当前的查询是:

select ID from MY_TABLE,
(select TYPE as GROUP_TYPE,
max(DATE) as MAX_DATE
from MY_TABLE group by TYPE)
where TYPE = GROUP_TYPE
and DATE = MAX_DATE

(我凭内存写的,也许有一些语法错误,但你明白了)

最佳答案

I'd prefer to stick to pure standard SQL without proprietary extensions.

那么就没有“更有效”的方式来编写这个查询。不在标准 ANSI-SQL 中。问题是您试图将 AGGREGATE 列(最大日期)与基本列(日期)进行比较以返回另一个基本列(ID)。 HAVING 子句无法处理这种类型的比较。

有一些方法可以使用 ROW_NUMBER(窗口函数)或 MySQL(group by hack)来做到这一点,但这些方法不能跨数据库系统移植。

关于sql - 如何用 "group by"子句替换 "having"的嵌套选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com