列表中每个值的 SQL 查询循环
Posted
技术标签:
【中文标题】列表中每个值的 SQL 查询循环【英文标题】:SQL query looping for each value in a list 【发布时间】:2021-07-27 23:01:24 【问题描述】:这里是 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
【问题讨论】:
用您正在使用的数据库标记您的问题。 【参考方案1】:该表有许多“id”条目,我试图为每个“id”获取一个条目。现在我有了 'id's 的列表。
一个典型的方法是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));
【讨论】:
不确定,我在运行命令时遇到了问题 - 可能与我使用 sql azure server 有关? @user6386155 。 . . Azure 支持窗口函数,所以我认为这不是问题。以上是关于列表中每个值的 SQL 查询循环的主要内容,如果未能解决你的问题,请参考以下文章