微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

列表中每个值的 SQL 查询循环

如何解决列表中每个值的 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 举报,一经查实,本站将立刻删除。