[英]Oracle equivalent of a SQL Server query
我需要知道等同於SQL Sever查詢的Oracle。 有人可以幫我嗎?
select recno = (select top 1 ld.recno from load ld where ld.crecno = i.recno)
from inputtable i
檢查以下查詢
select (select ld.recno from load ld where ld.crecno = i.recno AND RowNum =1)
AS recno from inputtable i
該SUBQUERY
你寫的是沒有必要的。 在LOAD
和INPUTTABLE
表之間進行INNER JOIN
操作是獲取所需集合的快速方法。
SQL語法解釋:在
LOAD
所有記錄中,有多少個值為CRECNO
的記錄在表INPUTTABLE
RECNO
列中具有匹配的值? 取得這些結果,如果結果按...(?)...排序,則輸出中的FIRST值(TOP(1))是多少?
OP中未指定任何SORT
優先級。
在SELECT語句中,始終將ORDER BY子句與TOP子句一起使用。 這是可預測地指示哪些行受TOP影響的唯一方法。 參考來源:Microsoft Technet 。
為了說明具有正確結果的正確格式的SQL語句,我繼續寫了OP的SQL查詢,並假設TOP(n)
解決方案想要RECNO
列值的升序排序中的第一個值。
如果缺少重要的表達式(例如ORDER BY
語句),則數據庫服務器確實具有默認的排序和選擇行為,但是冒充風險是假定在任何給定環境中所有默認值都設置為相同。
重寫的SQL:
WITH sub_query AS (
SELECT i.recno
FROM inputtable i, load ld
WHERE i.recno = ld.crecno
ORDER BY i.recno ASC
)
SELECT s.recno
FROM sub_query s
WHERE rownum = 1
可以更改
ROWNUM
評估和ORDER BY
標准以獲得預期的TOP(n)
行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.