2011-12-27 2 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_ ряды сейчас? –

+0

Извините? Я не следую? – methuselah

+0

Нет, и не я. Вам, похоже, требуется инструкция 'INSERT' для значений _return_, но значения INSERT _inserts_. –

ответ

4

Используйте предложение ORDER BY, используя столбец, который определяет порядок при выборе.

ORDER BY x ASC 

Заказ ничего не значит, когда вы ВСТАВЬТЕ. Вы не должны знать или заботиться о том, как он хранится под ним. SQL декларативный - беспокоиться о том, что делается, а не как.

+0

'INSERT INTO аренду ( идентификатором ) выберите @s: = @ S + 1 в виде Последовательности FROM (SELECT @S: = 399) А.С. BaseView, аренда ГДЕ @s <1000; ORDER BY id ASC' – methuselah

-2

Если id поле является первичным ключом, они будут возвращены в порядке возрастания по умолчанию. В качестве альтернативы, заставьте его order by id asc.

+0

В отношении нет первичного ключа или нет (хотя вы можете получить «повезло» и увидеть утечку абстракции) –

+1

-1 для предполагаемого подразумеваемого или заданного по умолчанию в любой таблице в любой СУБД – gbn

+0

. Тогда объясните, почему 100% времени, когда нет предложения 'order by', результирующий набор возвращается в порядке возрастания первичным ключом (независимо от типа ключа - даже первичные ключи с несколькими полями). –

Смежные вопросы