2012-01-17 2 views
2

При вставке данных в базу данных третья запись, которая идет, является первой записью во время ввода, а первая запись второй, а третья - четвертой и так далее.Выберите запрос, отображающий неправильный порядок в DB2

Я использую следующий запрос для выборки данных:

SELECT A, B, C, D, E, F FROM MYTABLE WHERE A = 'SOMEPGM' ORDER BY F 

F имеют дублирующие записи ...

почему первая запись становится третьей записи в результате?

ответ

4

Вы делаете ORDER BY "MGRSEQ", но есть строки с дубликатами MGRSEQ значения; вам нужно указать другой столбец, чтобы получить последовательный заказ. Заказ без явного предложения ORDER BY не гарантируется.

+2

+1 - Согласен. ** НИКОГДА не полагайтесь на неявное упорядочение в SQL, поскольку оптимизатор может делать все, что захочет (в значительной степени). –

+1

Yup. Хуже всего то, что большинство СУБД возвращают строки в порядке ввода * большую часть времени *, что, в свою очередь, приводит к программному обеспечению, которое полагается на это, и будет случайным. – Viruzzo

1

попробовать это:

SELECT "MGRROUT", "MGRTYP", "MGRRRN", "MGRNUM", "MGROPC", 
     "MGRVAR1", "MGRCOMP", "MGRVAR2", "MGREXC", "MGRSEQ", MGRCAT1 
FROM "XPGMLOGIC" WHERE "MGRPGM" = 'BARSCSLMS' 
ORDER BY "MGRSEQ", "MGRNUM" DESC