Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
MLT-Coder
- Сообщения: 10
- Зарегистрирован: 04 сен 2006, 12:44
Сообщение
MLT-Coder » 04 сен 2006, 16:39
в MySQL я это делал так
скачал расширение RandomUDF
все задекларировал, проверил
Код: Выделить всё
SELECT GetRandom(10) FROM MYTABLE - работает!
пытался сделать
Код: Выделить всё
select * from qwe order by GetRandom(1000) rows 1
выдает
Код: Выделить всё
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 36
(
Statement: select * from qwe order by GetRandom(1000) rows 1
пытался так
Код: Выделить всё
select qwe.*, GetRandom(1000) as Rand from qwe order by Rand
тоже нифига
Код: Выделить всё
Dynamic SQL Error
SQL error code = -206
Column unknown
RAND
Statement: select qwe.*, GetRandom(1000) as Rand from qwe order by Rand
что делать?
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 04 сен 2006, 17:04
все очень просто.
сначала получаешь случайный номер в программе. потом делаешь select * from table where pk_field = :rnd
то, что ты пытаешься сделать - странно. В последнем запросе прочитай внимательнее сообщение об ошибке. Хотя я не знаю, что тебе даст
select *.qwe, getrandom(1000) from qwe
ну даст в последнем столбце случайные числа от 0 до 999, и что?
Ну и наконец,
select *.qwe, getrandom(1000) from qwe
order by getrandom(1000)
будет работать не во всех серверах IB/FB.
проще и гарантировано:
select getrandom(1000), *.qwe from qwe
order by 1
-
MLT-Coder
- Сообщения: 10
- Зарегистрирован: 04 сен 2006, 12:44
Сообщение
MLT-Coder » 04 сен 2006, 17:27
получилось
select getrandom(1000), qwe.* from qwe order by 1 rows 1
ток меня это не устраивает =(
если бы можно было так
select getrandom(1000), * from qwe order by 1 rows 1
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 04 сен 2006, 17:48
получилась фигня, в общем-то. потому что раз данные getrandom не хранятся, сервер должен будет отсортировать не только getrandom в памяти (или на диске), но и *.qwe. Если табличка под несколько десятков или сотен записей, то тормозить будет преизрядно.
насчет "не устраивает *.qwe" я не понял. Вообще-то это вроде как стандарт, а с другой стороны, select * в реальных приложениях не пишут... я не учу, я констатирую.