Запрос:
select cast('10t' as unsigned) as qwe order by 1
Всё нормально.
А теперь вот такой запрос:
select qwe
from
(select cast('10t' as unsigned) as qwe) t0
order by 1
Получаем:
| level | code | message | | Warning | 1292 | Truncated incorrect INTEGER value: '10t' |
|
Вопрос: с какого перепоя в интегере появилась строка? Сортировка ведь применяется к уже полученному результату, в котором только одно поле, и оно
уже интегер.
ЗЫ. Подумал уже, может, мускль резко "поумнел" и стал пропихивать ордер во внутренний запрос, но эксплейн сказал, что нет
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | extra | | 1 | PRIMARY | <derived2> | system | NULL | NULL | NULL | NULL | 1 | | | 2 | DERIVED | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
|
, и вот тут я окончательно впал в ступор...