[英]How write SQL Query in Marklogic JAVA API using WHERE IN clause?
[英]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.