Страница 1 из 2

Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 09:20
Хыиуду
MySQL. Есть таблица members, в ней есть поле key - случайное девятизначное число. Требуется создать новый key, не совпадающий ни с одним из существующих. Как будет выглядеть запрос? select 100000000+floor(rand()*900000000) as new_key, а дальше?

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 10:17
Игорь Акопян
может GUID использовать?
а нафига было городить случайное число в ключ?

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 12:01
Duncon
`id` mediumint(8) unsigned NOT NULL auto_increment,
Дальше просто инсерт..

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 13:01
Laba
Если оставить в стороне вопрос о целесообразности получения значений pk с помощью генератора случайных чисел, то задачку можно решить так.

Скажу сразу, что не надо искать хорошее решение этой задачки в одном select'e. Для поиска значения ключа проще использовать цикл.

select min( v.new_key)
from members
, (
select round( dbms_random.value( 1, 1000) as new_key
from members
where rownum < 20
) v
where members.key != v.new_key

Этот запрос для оракл.

Константа 20 должна быть замена другим значением. Либо её надо подобрать экспериментальным путем, либо рассчитать используя знания теорвера :) , либо тупо брать 18% от количества свободных значений из диапазона значений для колонки key, но не более чем количество строк в таблице members.

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 15:25
Duncon
Садись 2, это тупо незнание работы баз данных..

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 17:45
Laba
Duncon писал(а):Садись 2, это тупо незнание работы баз данных..
Это о чём?

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 19:22
Хыиуду
Видимо, придется обходиться средствами php

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 19 авг 2009, 20:24
Duncon
auto_incrementНе полентесь найдите описание - оба..

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 20 авг 2009, 09:45
Laba
Duncon писал(а):auto_incrementНе полентесь найдите описание - оба..
А песня вовсе не о том, а о любви... :)

ТС спрашивал как написать sql, а не о том, как лучше создавать Pk
Игорь Акопян писал(а):а нафига было городить случайное число в ключ?
Это нужно когда импортируешь чужые данные или сливаешь несколько наборов в один. При проведении нагрузочных тестов для генерации данных; настройке производительности.

Re: Выбор случайного значения, не совпадающего с ключом

Добавлено: 20 авг 2009, 10:33
Duncon
Это быдлорешение.. Переубеждать не буду..