2012-02-15 24 views
0

我對Postgres數據庫相當陌生。我有一個查詢:如何在PostgreSQL的where子句中寫rownum

select offer_id, offer_date 
    from CMS_OFFER 
where ROWNUM < 300 

它在Oracle中執行但在Postgres它不會被執行。 我也嘗試了row_number()。它無法執行。請幫助我:我該如何實現這一目標?

+0

啊 - 使用專有擴展到SQL的(dis)優勢。當您切換DBMS時,它們不會隨您移動。 Oracle的ROWNUM是特有的,並且不一定在其他地方可用,除非'別處'碰巧模仿了Oracle。 – 2012-02-15 06:10:41

+1

不是說有一種非專有的方式來做到這一點...... – Thilo 2012-02-15 06:11:53

+0

@Thilo:根據PostgreSQL文檔SQL:2008引入了「FETCH FIRST n ROWS ONLY」語法。所以有一個標準的方法。但我懷疑Oracle是否支持它。 – 2012-02-15 18:18:27

回答

2
select offer_id,offer_date from CMS_OFFER limit 299 
+1

沒有實際情況的'where'將是一個語法錯誤。 – 2012-02-15 18:04:19

+0

和300是一個太多 – Thilo 2012-02-16 03:47:25

+0

哦。固定).... – 2012-02-16 06:42:24

6

雖然不完全一樣,Oracle的ROWNUM,PostgreSQL有LIMIT:

​​

不同的是,ROWNUM是分揀後分類之前應用和LIMIT(這通常是你想要什麼反正) 。