2016-06-05 2 views
0

Я смотрел на примере в моей книге программирования баз данных (она использует MySql) о том, как выбрать случайную строку из таблицы:Заказ по столбцу, который не существует?

SELECT * FROM Bugs ORDER BY RAND() LIMIT 1; 

Я запутался о том, как вы можете заказать по nonexistant колонка. Это эквивалент

SELECT *, RAND() AS temp FROM BUGS ORDER BY temp LIMIT 1; 

кроме побеждая в temp в столбец из результатов?

ответ

0

Это в основном то же самое. Единственное различие заключается в том, что значение не находится в наборе результатов. Есть еще одна тонкая разница. rand() в select следует оценивать один раз в строке в Bugs. Я думаю, что rand() в order by может оцениваться чаще (это зависит от реализации). В этом случае случайный порядок является случайным порядком в любом случае, поэтому этот нюанс не имеет значения.

Не следует путать наличие выражений в order by, которые не указаны в select. Это не особенно необычно.

Смежные вопросы