2011-12-27 55 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