Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 193
1

Создать тысячи уникальных имён

11.01.2024, 21:26. Показов 769. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте
Есть таблица, в которой среди прочих есть поле UserName. В нем хранятся уникальные логины пользователей системы.
При регистрации нового пользователя производится проверка на уникальность:
SQL
1
2
3
4
5
6
    
    SELECT @isUnique = COUNT(*) FROM users WHERE username = @fieldlogin
    IF @isUnique <> 0 BEGIN
        SELECT 0 RESULT, 'Этот Логин уже используется, попробуйте ввести другой!' Msg
        RETURN
    END
Поставлена задача организовать импорт пользователей из внешнего источника (CSV, например). Логинов в этом внешнем источнике нет и они должны быть сформированы по шаблону "user"+рандомный набор из 8 цифр.
Т.е. для импорта 10000 записей нужно 10000 раз повторить примерно такой цикл:
SQL
1
2
3
4
5
6
7
8
    
    @fieldlogin = "user"+"результат некоего рандомайзера"
    SELECT @isUnique = COUNT(*) FROM users WHERE username = @fieldlogin
    while @isUnique <> 0 BEGIN
       @fieldlogin = "user"+"повтор рандомайзера"
       SELECT @isUnique = COUNT(*) FROM users WHERE username = @fieldlogin
    END
    INSERT INTO users ...
Учитывая, что далеко не факт, что тело цикла while будет выполняться только один раз для каждого нового рандомного имени, такой импорт явно "забуксует".
Подскажите, на основе чего лучше сделать такой рандомайзер (мои варианты: системное время с миллисекундами, текущее значение автоинкремента этой таблицы)?
Может быть вообще подход не рациональный?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2024, 21:26
Ответы с готовыми решениями:

Сколько уникальных имен студентов?
Пожалуйста, помогите справиться с заданием. Для выполнения запросов использовать среду IB Expert....

Запрос sql: совместный вывод уникальных и не уникальных столбцов
Добрый день, уважаемые программисты! Вопрос следующий: каким образом вывести уникальные значения...

Создать функцию, которая будет возвращать массив уникальных имен из массива объектов people.
нужно создать функцию getUniqNames, которая будет возвращать массив уникальных имен из массива...

Генерация уникальных имен файлов
Добрый день уважаемые коллеги . Проблема такова не могу создать файл с уникальным именем .Есть...

Поиск уникальных имён в нескольких столбцах
Чем больше учусь, тем выше сложность и больше вопросов)) Аналитик аудитории Расчёт Аналитик...

4
3400 / 1319 / 470
Регистрация: 31.05.2012
Сообщений: 4,668
11.01.2024, 22:14 2
T-SQL
1
2
3
4
5
6
WITH cte AS
  (SELECT * FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) X(X)),
cte1 as  
  (SELECT 'user'+format(ABS(CHECKSUM(NEWID())) % 1000000000,'d8') login
    fROM cte a1, cte a2, cte s3)  --11^3=1331 строка в результате
select top 1000 login from cte1 group by login  --избавиться от возможных дублей (а вдруг))
запиши результат во временную табличку и будет тебе 1000 уникальных логинов. Для 10000 нужно чуть пошаманить с запросом )
0
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 193
11.01.2024, 22:30  [ТС] 3
Цитата Сообщение от Аватар Посмотреть сообщение
запиши результат во временную табличку и будет тебе 1000 уникальных логинов. Для 10000 нужно чуть пошаманить с запросом )
Эти 1000 логинов будут уникальны между собой. Вопрос в том, что их нужно поместить в другую таблицу, не допустив уникальности с уже существующими там до этого
0
3400 / 1319 / 470
Регистрация: 31.05.2012
Сообщений: 4,668
11.01.2024, 22:41 4
Цитата Сообщение от Престашоп Посмотреть сообщение
Вопрос в том, что их нужно поместить в другую таблицу
нет, вопрос был как создать кучу уникальніх логинов. а это уже другой вопрос ) напиши запрос удаляющий из полученой таблички логины которые есть в твоей другой таблице )
0
13 / 8 / 7
Регистрация: 12.06.2019
Сообщений: 193
11.01.2024, 22:50  [ТС] 5
Цитата Сообщение от Аватар Посмотреть сообщение
напиши запрос удаляющий из полученой таблички логины которые есть в твоей другой таблице )
Вот это уже мысль, спасибо!
0
11.01.2024, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2024, 22:50
Помогаю со студенческими работами здесь

Сделать запрос в цикл для получения уникальных имён
Мне надо вот этот запрос засунуть в цикл что бы каждое имя было уникальным ...

Сортированный список уникальных имён по нескольким условиям с суммированием количества
Здравия! На складе куча хлама и периодически приходится распечатывать отчёт сколько и чего...

Создать php-скрипт, в котором создать массив имен
1. Создать php-скрипт, в котором создать массив имен. a) Выводить приветствие для имен из списка...

Получение уникальных элементов заданной строки и уникальных чисел вектора
11. Напишите R-программу для получения уникальных элементов заданной строки и уникальных чисел...

Создать список уникальных последовательностей номеров
Приветствую. Хотелось бы понять, как реализовать следующее: Нужно создать список номеров типа ...

Подсчитать количество уникальных и не уникальных элементов в массиве
Всем привет! Ни разу не пробовал вставлять тут код, поэтому могу сделать это криво. Уж, извиняйте...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru