簡體   English   中英

使用命令sql從另一個表插入表數據

[英]Table data insert from another table with an order sql

在我的項目中,我需要從另一個表插入一個表數據。 我試圖編寫此sql代碼。 但是,在插入數據時,此按選項排序不起作用。 這是我的代碼:

INSERT INTO StudentInfo_MeritPosition
       ( ID,
         Name,
         MeritPosition,
         SSC,
         HSC,
         First,
         Second,
         Third,
         Fourth,
         Fifth
       )
       SELECT ID,
              Name,
              MeritPosition,
              SSC,
              HSC,
              First,
              Second,
              Third,
              Fourth,
              Fifth
       FROM StudentInfo
       ORDER BY MeritPosition

上面的代碼將數據插入數據庫。 但不是訂單格式。 我需要知道我們是否可以解決此問題。 謝謝。

SQL表表示無序集。 從表中檢索數據時,數據沒有特定的順序,除非您通過指定order by 因此,您可以按以下方式檢索數據:

select mp.*
from StudentInfo_MeritPosition mp
order by mp.MeritPosition;

您可以通過在StudentInfo_MeritPosition(MeritPosition)上添加索引來提高此查詢的效率。

您可以使用臨時表以所需的任何方式進行排序。 在我看來,先組裝一個臨時表,然后對這些結果進行排序,然后將它們選擇到要按給定順序填充的表中,會更容易。 這樣,您可以將其轉換為存儲過程,並向其提供“列名”和“ ASC或DESC”的參數。 由於您正在選擇,排序,重新選擇和插入,因此臨時表的處理時間會更長一些。 但是,最終結果比1次查詢更健壯,它允許您使用任何列名以及ASC或DESC。 只需記住,當您確實將結果選擇到永久表中時,就沒有了select into語句中的主鍵(通常為[P_ID])列。

因此,為了改善戈登的答案,您可以編寫如下內容:

 DECLARE @fromTbl, @sortCol, @orderByCol VARCHAR(50)
 EXEC('
 select mp.*
 from /* StudentInfo_MeritPosition* / ' + @fromTbl + 'mp
 order by /* mp.MeritPosition */ mp.' + @orderByCol + ' ' + @sortOrder;'

   /* If you wanted to debug it and make sure your parameters are being
   generated correctly, you can use the PRINT function instead of 
   Exec('Your statement above') */

然后,如果將其轉換為SP,則可以傳入三個參數表,按列順序和排序順序(ASC | DESC),並繞開我前面提到的臨時表創建過程。

嘗試這個。

INSERT 

/*+append*/

INTO StudentInfo_MeritPosition
       ( ID,
         Name,
         MeritPosition,
         SSC,
         HSC,
         First,
         Second,
         Third,
         Fourth,
         Fifth
       )
SELECT *
FROM ( 
      SELECT ID,
             Name,
             MeritPosition,
             SSC,
             HSC,
             First,
             Second,
             Third,
             Fourth,
             Fifth
      FROM StudentInfo
      ORDER BY MeritPosition );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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