|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Здравствуйте! Подскажите пожалуйста, как из 1 млн. таблицы выбрать 500 случайных записей? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 05:57 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
RefuserЗдравствуйте! Подскажите пожалуйста, как из 1 млн. таблицы выбрать 500 случайных записей? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Проверено на таблице в 220000 записей, VFP9. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 09:42 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Как много кода... А проще никак? В одном селекте например)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 10:51 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
RefuserКак много кода... А проще никак? В одном селекте например)) А попробуйте, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 10:52 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Типа такого, может: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 11:28 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
А если представить массив случайных номеров записей в виде строки типа lcRndRex=1,7,5,2345,... а потом дать SELECT ... WHERE RecNo IN(lcRndRex)? Выборка такая, правда, будет довольно долго исполняццо... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 13:13 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
<>Типа такого, может: Код: plaintext
Чувствуется, что человек прямо-таки страдает по SELECT-SQL, однако это страдание безответное. Такой SELECT просто выберет первых 500 записей (неслучайных) из таблицы и красиво их упорядочит случайным образом. Вы считаете, что это и есть 500 случайных записей ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 14:05 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
CTAC-KOА если представить массив случайных номеров записей в виде строки типа lcRndRex=1,7,5,2345,... а потом дать SELECT ... WHERE RecNo IN(lcRndRex)? Выборка такая, правда, будет довольно долго исполняццо... Нет смысла тратить время на формирование такой строки. Можно искать номер записи прямо в массиве : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 14:22 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Всех приветствую ! А по моему Код: plaintext 1.
Всегда думал , что TOP накладывается после ORDER . Проверить бы надо , интересно уже , попозже чуток , как обед закончиться . :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 14:35 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Melnik_AВсех приветствую ! А по моему Код: plaintext 1.
Всегда думал , что TOP накладывается после ORDER . Проверить бы надо , интересно уже , попозже чуток , как обед закончиться . :) А я как раз проверил. И все сработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 14:43 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Можно и попроще, однако все с тем же алгоритмом *======================= * курсор для вывода строк SELECT * FROM SourceTable WHERE .f. INTO CURSOR Out READWRITE SELECT sourcetable FOR i=1 TO 500 GO INT(1000000*RAND()) SCATTER MEMVAR memo SELECT out APPEND BLANK GATHER MEMVAR memo NEXT *======================= ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 15:02 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Да, верно. При изучении ORDER BY под микроскопом оказалось, что он выполняется раньше, чем TOP. When you include the TOP clause, you must include an ORDER BY clause. The ORDER BY clause specifies the columns for which the TOP clause determines the number of rows to include in the query result. Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 15:04 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
igorbik, Немножко точнее *======================= SELECT * FROM SourceTable WHERE .f. INTO CURSOR Out READWRITE FOR i=1 TO 500 GO INT(1000000*RAND()) in sourcetable SCATTER MEMVAR memo SELECT out APPEND BLANK GATHER MEMVAR memo NEXT *======================= ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 15:05 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
2<> И действительно работает ! :) Красиво получается . Единственно что , может лучше написать какнить так - "SELECT TOP 500 Field1, RAND()*1000000000 as R FROM Tab1 ORDER BY R" Просто значение RAND() режется до двух знаков после запятой и без увеличения разрядности есть риск получить одинаковые значения полей в выборке . Хотя он всёравно есть(риск) , но с этим просто так ничего не сделаешь , покрайней мере одним селектом точно ! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 15:05 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Melnik_A Единственно что , может лучше написать Может, и лучше. Я почему и сказал: Типа такого, может: ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 15:11 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
Уфф........ Хотя нет "*1000000000" лишнее ! :) Запутался я слегка (переел наверное, тяжко :) Уникальность значения рандом_поля совсем не нужно по задаче . Это я уже лишнее, от себя придумал . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 15:12 |
|
Как из 1 млн. таблицы выбрать 500 случайных записей?
|
|||
---|---|---|---|
#18+
а Вам не кажется , что Rand()*xxxx при закрытии открытии фокса дает одни и теже цифры...:-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 01:27 |
|
|
start [/forum/topic.php?fid=41&msg=36345242&tid=1585800]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 142ms |
0 / 0 |