Показать сообщение отдельно

  #6  
Старый 05.12.2016, 16:06
t0ma5
Постоянный
Регистрация: 10.02.2012
Сообщений: 830
Провел на форуме:
300820

Репутация: 90


По умолчанию

похоже если какую то часть конструкции не удаётся высчитать сразу, то он таки прогоняет запрос для каждого union

Код:
select count(*) from(select 1 union select 2 union select 3)x group by (rand(1)*2);
+----------+
| count(*) |
+----------+
|        1 |
|        1 |
|        1 |
+----------+
3 rows in set (0.00 sec)
ну и число похоже должно быть не целочисленное

Код:
select count(*) from(select 'z' union select 'x' union select 'e')x group by (md5(rand(1)*2) + 1);
+----------+
| count(*) |
+----------+
|        2 |
|        1 |
+----------+
2 rows in set (0.00 sec)

select count(*) from(select 'z' union select 'x' union select 'e')x group by (md5(rand(0)*2) + 1);

ERROR 1062 (23000): Duplicate entry '1' for key 'group_key'

select (md5(rand(1)*2) + 1);
+----------------------+
| (md5(rand(1)*2) + 1) |
+----------------------+
|                    4 |
+----------------------+
1 row in set (0.00 sec)

select (md5(rand(0)*2) + 1);
+------------------------+
| (md5(rand(0)*2) + 1)   |
+------------------------+
| 1.7976931348623157e308 |
+------------------------+
1 row in set (0.00 sec)
думаю никто не расстроится если я тут пофлужу

------------------------------

Код:
select md5(rand(0)*2);
+----------------------------------+
| md5(rand(0)*2)                   |
+----------------------------------+
| 810e2137cdf4bde97083b021c6b34a09 |
+----------------------------------+
0e кастование типов, ноги float растут отсюда, не забыть найти линк

----------------------------------------------

Код:
> select count(*) from(select 'z' union select 'x' union select 'e')x group by concat(version(),':',(md5(rand(19)*2) + 1));
ERROR 1062 (23000): Duplicate entry '5.6.31:1' for key 'group_key'

> select (md5(rand(19)*2) + 1);
+-----------------------+
| (md5(rand(19)*2) + 1) |
+-----------------------+
|             977882091 |
+-----------------------+
1 row in set (0.00 sec)
мде

-------------------------------------------------

Код:
> select count(*) from(select 'z' union select 'x' union select 'e')x group by concat(version(),':',(md5(rand(19)*2) + 999));
ERROR 1062 (23000): Duplicate entry '5.6.31:999' for key 'group_key'
5.6.31:1 .... 5.6.31:999

куда девается (md5(rand(19)*2)
 
Ответить с цитированием