簡體   English   中英

Oracle等同於SQL Server查詢

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

將TOP(N)T-SQL語法轉換為Oracle兼容的SQL

SUBQUERY你寫的是沒有必要的。 LOADINPUTTABLE表之間進行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.

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