2011-12-27 25 views
1

以下代碼在MYSQL表中創建行,但以降序返回它們。按升序創建MYSQL行

如何讓它以升序返回值?

INSERT INTO 
     rent 
     (
     id 
     ) 
    select @s:[email protected]+1 as seq 
    FROM (SELECT @s:=399) AS baseview, rent 
    WHERE @s<1000; 
+0

現在'INSERT' _returns_行? – 2011-12-27 16:12:10

+0

對不起?我不遵循? – methuselah 2011-12-27 16:24:27

+0

不,我也沒有。你似乎想要一個'INSERT'語句來_return_值,但'INSERT' _inserts_值。 – 2011-12-27 16:29:16

回答

4

使用ORDER BY子句使用確定SELECT時的順序的列。

ORDER BY x ASC 

當您插入時,排序無意義。你不應該知道或關心它是如何存儲在底下的。 SQL是聲明式的 - 擔心做什麼,而不是如何。

+0

'INSERT INTO 租金 ( ID ) 選擇@s:= @ S + 1爲SEQ FROM(SELECT @s:= 399)AS基本視圖,租 WHERE @s <1000; ORDER BY id ASC' – methuselah 2011-12-27 16:18:00

-2

如果id字段是一個主鍵,將它們按升序排列默認返回。或者,強制使用order by id asc

+0

關係中沒有固有的順序,主鍵或沒有(儘管你可能會「幸運」並看到抽象泄漏) – 2011-12-27 16:12:44

+1

-1假設任何RDBMS中的任何表中存在默認或默認順序 – gbn 2011-12-27 16:13:48

+0

然後解釋爲什麼100%的時間,當沒有'order by'子句時,結果集以主鍵(不管鍵的類型 - 即使是具有多個字段的主鍵)的遞增順序返回。 – 2011-12-27 18:51:42