我得到了這樣的查詢如何獲得價值最高的排?
SELECT
IMAGE_PATH, IMAGE_ID, DOC_NID
FROM
TBL_IMAGE WHERE IMAGE_ORD = 1
並有後續條件
- image_ord應該BR改爲image_ord =最大值
- image_ord列號碼類型,它有一些重複
- 我只需要一個最大值的image_ord
- 它可以處理與rownum處理,但我不想因爲它有很多層(這是子查詢)
是否可以在沒有子查詢的情況下處理?
我得到了這樣的查詢如何獲得價值最高的排?
SELECT
IMAGE_PATH, IMAGE_ID, DOC_NID
FROM
TBL_IMAGE WHERE IMAGE_ORD = 1
並有後續條件
是否可以在沒有子查詢的情況下處理?
根據您的要求:
「image_ord [...]有一些重複」
「我只需要一排用的最大價值image_ord「
WITH C AS (SELECT MAX(IMAGE_ORD) M FROM TBL_IMAGE)
SELECT
TBL_IMAGE.IMAGE_PATH, TBL_IMAGE.IMAGE_ID, TBL_IMAGE.DOC_NID
FROM
TBL_IMAGE JOIN C ON IMAGE_ORD = C.M
WHERE ROWNUM < 2
WITH ...
語句將獲取最大價值,爲image_ord
場SELECT ...
語句將臨時表上使用JOIN
上述WHERE ROWNUM < 2
將結果的數量限制爲1排請注意,如果沒有(明確的)ORDER BY
子句,SELECT
語句的結果應視爲無序的一組行。所以在重複的情況下,你不應該依賴任何特定的行(甚至是同一行)被返回。只需「一」行具有最大值image_ord
價值。
感謝您的回答。我也擔心image_ord值的重複,但我不知道如何避免這種情況。無論如何,我喜歡你的精彩答案,特別是使用'with'。這使得更清晰,更好:D非常感謝b – 2014-09-19 14:17:44
試試這個:
SELECT
IMAGE_PATH, IMAGE_ID, DOC_NID, Max(image_ord)
FROM
TBL_IMAGE WHERE IMAGE_ORD = 1 group by IMAGE_PATH, IMAGE_ID, DOC_NID
那麼,如果你搜索'max(image_ord)',那麼'where image_ord = 1'語句不合適。 – yamny 2014-09-19 09:18:13
那麼只要在這種情況下刪除條件可能會有所幫助? – 2014-09-19 09:21:24
我解決了我自己的問題跟隨查詢。 無論如何,我不得不使用子查詢,並添加一些額外的功能,在大括號中使用。
select
doc_nid, max(image_ord) as image_ord
from
(
select
doc_nid, nvl(image_ord, 0) as image_ord
from
tbl_image
where
doc_nid is not null
)
group by doc_nid
這是不是很清楚,我:如果_「image_ord [...]有一些重複」 _和_你「只需要一排與image_ord的最大價值」 _你怎麼不同的區分具有相同最大'image_ord'的行? – 2014-09-19 08:43:20
@SylvainLeroux它有幾行的值爲1.我知道這是錯誤的DB計劃,但它不是一個序列,只是數字類型列。無論如何,當我按'排序'時,第一行總是相同的。 – 2014-09-19 09:08:19
'ORDER BY'是什麼?如果這是'ORDER BY IMAGE_ORG',那麼不應該依賴這樣的事實:對於_same_「IMAGE_ORG」值,以任何特定順序檢索行。 – 2014-09-19 09:28:53