Видимо баг в MySQL 5.1.42 с сортировкой и UNION

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
goshanecr
сержант
Сообщения: 252
Зарегистрирован: 2008-03-31 15:54:49
Откуда: Пермь, Екатеринбург
Контактная информация:

Видимо баг в MySQL 5.1.42 с сортировкой и UNION

Непрочитанное сообщение goshanecr » 2010-01-09 17:48:47

Привет всем.
OS: FreeBSD 8.0 i386
MySQL: 5.1.42
/etc/make.conf

Код: Выделить всё

CPUTYPE=athlon64
CFLAGS=-O2 -pipe -msse -msse2 -mmmx -m3dnow -mtune=athlon64 -fno-strict-aliasing
COPTFLAGS=-O2 -pipe -msse -msse2 -mmmx -m3dnow -mtune=athlon64
WANT_MYSQL_VER=51
.if ${.CURDIR} == ${PORTSDIR}/database/mysql51-server
        WITH_CHARSET=utf8
        WITH_XCHARSET=all
        WITH_COLLATION=utf8_general_ci
        WITH_OPENSSL=yes
        WITH_FAST_MUTEXES=yes
        BUILD_OPTIMIZED=yes
.endif
так вот есть таблица

Код: Выделить всё

myTable (id int unsigned primary key auto_increment, orderID int unsigned)
в случае запроса

Код: Выделить всё

SELECT id,0 FROM myTable ORDER BY orderID ASC
всё нормально, а вот в случае:

Код: Выделить всё

(SELECT 9999,COUNT(id) FROM myTable) 
UNION 
(SELECT id,0 FROM myTable ORDER BY orderID ASC)
выбирает второй SELECT без сортировки... Раньше вроде было всё норм.. не заметил в какой момент это произошло, но вот сейчас так. Это баг MySQL или это я чего-то не понимаю?
Люблю в инете шарить. И браузер мой только Opera !!!
Пользователям стараюсь ставить дистр Ubuntu. Уже 3 человека пересели.
Домашний комп FreeBSD 9.0 amd64
FreeBSD - изменим жизнь к лучшему!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Видимо баг в MySQL 5.1.42 с сортировкой и UNION

Непрочитанное сообщение zg » 2010-01-09 18:27:27

это не баг, так и задумано
http://dev.mysql.com/doc/refman/5.1/en/union.html

Код: Выделить всё

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
However, use of ORDER BY for individual SELECT statements implies nothing about the order in which the rows appear in the final result because UNION by default produces an unordered set of rows. Therefore, the use of ORDER BY in this context is typically in conjunction with LIMIT, so that it is used to determine the subset of the selected rows to retrieve for the SELECT, even though it does not necessarily affect the order of those rows in the final UNION result. If ORDER BY appears without LIMIT in a SELECT, it is optimized away because it will o determine the subset of the selected rows to retrieve for the SELECT, even though it does not necessarily affect the order of those rows in the final UNION result. If ORDER BY appears without LIMIT in a SELECT, it is optimized away because ithave no effect anyway.

Аватара пользователя
goshanecr
сержант
Сообщения: 252
Зарегистрирован: 2008-03-31 15:54:49
Откуда: Пермь, Екатеринбург
Контактная информация:

Re: Видимо баг в MySQL 5.1.42 с сортировкой и UNION

Непрочитанное сообщение goshanecr » 2010-01-10 21:50:50

Точно... заработало :) Спасибо что ткнул носом :)
Люблю в инете шарить. И браузер мой только Opera !!!
Пользователям стараюсь ставить дистр Ubuntu. Уже 3 человека пересели.
Домашний комп FreeBSD 9.0 amd64
FreeBSD - изменим жизнь к лучшему!