[英]oracle in clause along with rownum
我不是Oracle專家,所以我希望有人可以幫助我解決這個問題。
我有一種情況,我需要查詢表中的前1000條記錄,而我的查詢中已經有一個where子句的IN子句。 例如,假設有一個名為employee的表,該表有4列,
我想查詢狀態為(MA或NY或NH)的前1000條記錄,我該怎么做?
select name, salary
from Employee
where state IN ('MA','NY','NH')
現在的問題是,如果我在最后使用rownum <1000,它將只查找所有結果並僅顯示前1000。但是我想看看IN子句中每個State值的前1000是否...有人可以建議正確的方法嗎...
提前致謝...
您要使用row_number()
:
select e.name, e.salary
from (select e.*, row_number() over (partition by state order by state) as seqnum
from employee e
where state in ('MA', 'NY', 'NH')
) e
where seqnum <= 1000;
我不確定“每個州的前1000名”是什么意思。 您沒有問題的排序或建議的排序方式。 而且,SQL表本質上是無序的。 這將從不確定的行中為每個狀態返回1000個值。
用這個:
Select name, salary
from Employee
where state IN ('MA','NY','NH')
Group by state
HAVING Count(*) <=1000
Order by state
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.