Вот сценарий - У меня есть таблицаSQL SELECT ... В результате того,
CREATE TABLE IF NOT EXISTS `stylemaps` (
`zyid` varchar(9) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`styid` varchar(9) CHARACTER SET ascii COLLATE ascii_bin NOT NULL DEFAULT 'zzzz0000Z',
UNIQUE KEY `zyid` (`zyid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Типичный набор записей в этой таблице может быть
zyid styid
qrst1234 abcd1230
abcd9876 abcd1231
pqzx4569 abcd1232
bcde0000 abcd1233
т.е. порядка записей для zyid довольно случайный.
Теперь предположим, что я выдаю
SELECT styid FROM `styles` WHERE zyid in ['abcd9876','bcde0000']
результат я получаю
abcd1231
abcd1233
т.е. строки упорядочены таким же образом, как В пункте моего SQL заявления.
Мой вопрос в том, что я могу полагаться на это всегда в этом случае (до тех пор, пока я правильно заказываю записи предложения IN)?
Если это когда-либо терпит неудачу, и я в конечном итоге неправильно сопоставляю стили, конечные результаты могут быть полностью искажены. Альтернативой было бы сделать
SELECT zyid,styid
вместо
SELECT styid
, а затем сделать немного больше работы по результатам, чтобы гарантировать правильное отображение.
Я думаю, но я не уверен, поэтому нет ответа, что поведение не определено. Нет необходимости в какой-либо реализации, чтобы заказывать ваши результаты, если вы не просите об этом. Поэтому, пока реализация сервера _might_ дает вам последовательные результаты, вы можете и не должны полагаться на него – Nanne