簡體   English   中英

oracle in子句以及rownum

[英]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.

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