如何解决列表中每个值的 SQL 查询循环
这里的 sql 新手 - 我试图从匹配特定条件的表中获取 1 行
通常看起来像
SELECT TOP 1 *
FROM myTable
WHERE id = 'abc'
输出可能看起来像
value id
--------------
1 abc
该表有许多“id”条目,我试图为每个“id”获取一个条目。现在我有 'id's 的列表。我将如何执行类似
SELECT TOP 1 *
FROM myTable
FOR EACH id
WHERE id IN ('abc','edf','fgh')
期待结果
value id
--------------
1 abc
10 edf
12 fgh
我不知道它是某种联合操作还是连接操作,但想学习。我正在使用 Azure sql Server
解决方法
该表有许多“id”条目,我试图为每个“id”获取一个条目。现在我有了“id”列表。
典型的方法是row_number()
:
select t.*
from (select t.*,row_number() over (partition by id order by id) as seqnum
from mytable t
) t
where seqnum = 1;
注意:如果需要,您可以过滤特定的 ID。目前尚不清楚您的问题是否真的需要这样做。
如果您碰巧使用 SQL Server(如 select top
建议的那样),您可以使用更简洁但性能稍差的:
select top (1) with ties t.*
from mytable t
order by row_number() over (order by id order by (select null));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。