Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
20 / 20 / 1
Регистрация: 03.01.2013
Сообщений: 184

Случайная выборка без повторений

20.06.2013, 20:21. Показов 3390. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица Applicant - количество записей 6000

стоит задача заполнить таблицу Statement случайными ApplicantID, но без повторений

Есть такой код:
SQL
1
2
3
4
5
6
7
8
9
10
11
DECLARE @i INT,
@appID INT,
@r INT
SET @i = 1
while @i < 6001
BEGIN
    SET @r = CEILING(rand()*(SELECT MAX(ApplicantID) FROM Applicant))
INSERT INTO Statement(id, AppID)
VALUES(@i, @appID)
SET @i +=1
END
таким способом есть вероятность что рандом сделает повтор.
как сделать так чтоб его не было?
help plz =)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2013, 20:21
Ответы с готовыми решениями:

Inner Join без повторений для создания представления
Есть две таблицы, все столбцы из которых нужно запихнуть в представление. Они связаны через первичный ключ одной из них. Сервер...

Выборка без повторений по IP адресам
Здравствуйте. Еще одни вопрос. Есть таблица с данными для статистики cod, ip, date, И запрос: $sql =...

Выборка значений из столбцов без повторений.
Как можно создать перечень или список значений, содержащихся в столбце, таким образом, чтобы одинаковые значения не повторялись?

7
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
20.06.2013, 20:35
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
declare @t table (i int primary key);
 
with x as
(
 select top (20000)
  row_number() over (order by (select 1)) as n
 from
  master.dbo.spt_values a cross join
  master.dbo.spt_values b
)
insert into @t
select top(6000)
 n
from
 x
order by
 newid();
0
20 / 20 / 1
Регистрация: 03.01.2013
Сообщений: 184
20.06.2013, 20:35  [ТС]
Будь добр расталкуй
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
20.06.2013, 20:39
StudentMichael, что именно растолковать?
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
21.06.2013, 10:01
гы) зачем брать значения, превышающие 6000 Они ж не привяжутся к Applicant
и зачем потом упорядочивать последовательность по PK
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
21.06.2013, 10:16
Цитата Сообщение от cygapb-007 Посмотреть сообщение
гы) зачем брать значения, превышающие 6000 Они ж не привяжутся к Applicant
Интересно как можно нагенерить 6000 случайных уникальных значений из 6000 возможных?
Цитата Сообщение от cygapb-007 Посмотреть сообщение
и зачем потом упорядочивать последовательность по PK
А этого вообще не понял.

ТС'у был показан принцип. Как он будет (и будет ли вообще) допиливать пример под свои нужды - его дело.
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
21.06.2013, 10:24
Цитата Сообщение от invm Посмотреть сообщение
Интересно как можно нагенерить 6000 случайных уникальных значений из 6000 возможных?
да ровно так, как и предложено по тексту
взять цепочку чисел 1..6000 (но не 1..20 000) и отсортировать случайным образом
А этого вообще не понял.
Просто возражение против declare @t table (i int primary key); из-за которого случайный порядок преобразуется обратно в упорядоченную последовательность
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
21.06.2013, 10:51
Цитата Сообщение от cygapb-007 Посмотреть сообщение
взять цепочку чисел 1..6000 (но не 1..20 000) и отсортировать случайным образом
В условии сказано про 6000 записей, а не про диапазон значений 1..6000.
Цитата Сообщение от cygapb-007 Посмотреть сообщение
Просто возражение против declare @t table (i int primary key); из-за которого случайный порядок преобразуется обратно в упорядоченную последовательность
Какая последовательность? Пример не решает задачу ТС'а, а показывает как получить N уникальных случайных значений из M возможных и PK в нем лишь гарант этой самой уникальности. А задача ТС'а решается в одну инструкцию:
T-SQL
1
2
3
4
5
6
7
insert into Statement
 (id, AppID)
 select
  row_number() over (order by newid()),
  ApplicantID
 from
  Applicant;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2013, 10:51
Помогаю со студенческими работами здесь

Выборка без ключевых слов/Выборка без столбцов/Выборка с условием
Нужно сделать 2 типа выборки в отдельный столбец: #1 без ключевых слов типа &quot;АРБУЗ, ДЫНЯ&quot; #2 без данных содержащихся в трех...

Случайная выборка
Приветствую, All! Такой вопрос... В БД есть таблица с большим количеством записей. Можно ли рэндомально (наугад) выбрать из них...

Случайная выборка из БД по времени
Доброго всем времени суток. У меня возник такой вопрос. Как сделать случайную выборку из базы данных по времени. Ну например:показать...

Случайная выборка из БД acces
всем добрый вечер ! обращаюсь к вам с таким вопросом. Необходимо сделать программу выводящую результаты футбольных матчей. в матче команда...

Случайная выборка и сохранение
У меня есть список, как его загрузить из текстового файла я знаю.., мне нужно оттуда выбрать случайным образом одну строку - как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru