SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.03.2009 20:22:50

Elrion
Участник
Зарегистрирован: 17.03.2009
Сообщений: 2

После UNION почему-то меняется порядок строк

Имеется запрос, состоящий из 2х SELECT'ов и объединяющего их UNION'a. Первый запрос, если его выполнить отдельно, возвращает все как нужно, то есть все отсортировано по submid. Второй запрос сам по себе не возвращает ничего. Однако если объединить их UNIONом, Порядок строк почему-то меняется о_О. Т.е. submid не отсортировано, а совершенно хаотично.. 50,49,51,47..

Собственно не могу понять, с чем это связано. Запрос ниже:

(
SELECT fsbm.id AS submid, fsbm. * , f. * , u.id AS userid, u.firstname, u.lastname, gm.groupid
FROM mdl_fileupload_submissions fsbm, mdl_fileupload f, mdl_user u, mdl_groups_members gm
WHERE course =3
AND fsbm.user_id = u.id
AND f.id =9
AND f.id = fsbm.fileupload_id
AND gm.userid = u.id
AND timemarked =0
ORDER BY submid ASC
)
UNION
(
SELECT fsbm.id AS submid, fsbm. * , f. * , u.id AS userid, u.firstname, u.lastname, gm.groupid
FROM mdl_fileupload_submissions fsbm, mdl_fileupload f, mdl_user u, mdl_groups_members gm
WHERE course =3
AND fsbm.user_id = u.id
AND f.id =9
AND f.id = fsbm.fileupload_id
AND gm.userid = u.id
AND timemarked <>0
ORDER BY timemarked DESC
);

Неактивен

 

#2 17.03.2009 21:15:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: После UNION почему-то меняется порядок строк

Результат UNION не обязан быть отсортирован. Если хотите сортировку, то ее следует выполнить вне UNION

SELECT * FROM ( SELECT UNION SELECT) ORDER BY timemarked DESC;

Неактивен

 

#3 17.03.2009 23:25:37

Elrion
Участник
Зарегистрирован: 17.03.2009
Сообщений: 2

Re: После UNION почему-то меняется порядок строк

спасибо, решил проблему при помощи генерации 2х дополнительных полей.. и последующей сортировкой по ним. Если запрос критичен к скорости, это, возможно, не лучший вариант, но работу свою он делает)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson