簡體   English   中英

如何編寫 SQL 查詢以使用 IN 子句獲取第一條記錄(最新)?

[英]How to write SQL query to fetch the first record (latest) using IN clause?

我有一個 excel 文件,里面有一些數據(ids),這些 id 在數據庫中有不止一條記錄。 我有大約 400 個 ID,我需要獲取每個 ID 的最新記錄。 我不想一件一件地做。 我嘗試使用 IN 子句,但沒有用。

Select *
from myTable with (nolock)
where submission_number IN ('02597', '69875')
order by timestame DESC;

上面的查詢不符合我的要求。 有人可以幫忙/指導嗎?

謝謝

我會使用apply來做到這一點:

select t.*
from (values ('02597'), ('69875')) v(submission_number) cross apply
     (select top (1) t.*
      from mytable t
      where t.submission_number = v.submission_number
      order by t.timestamp desc
     ) t;

一個不錯的功能是您可以使用outer apply ,即使您的表中沒有匹配項,它也會在結果集中返回一行。

另一種不使用子查詢的方法是;

select top (1) with ties t.*
from myTable t
where submission_number in ('02597', '69875')
order by row_number() over (partition by submission_number order by timestame desc);

您可以使用row_number

select * 
from (
    select *, row_number() over (partition by submission_number order by timestame desc) rn
    from yourtable
) t
where rn = 1

這將為每個submission_number返回單個記錄。 如果您只想要in子句中的 2,您可以將其添加回where條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM