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

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

20.06.2013, 20:21. Показов 3411. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru