Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста. Есть процедура которая возвр. случайные id из таблицы. Код: sql 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. Вот думал отловить с помощью отлова ошибки (1062 дублирование уник. ключа) Повесть на поле rand_id уникальный ключ. CREATE TEMPORARY TABLE rands ( rand_id INT UNIQUE); Код: sql 1. И не хочет оно работать, подскажите как можно решить такое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 08:34 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
dok11не хочет оно работатьЧто означает "не хочет"? Оно не может не работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 08:40 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Akina, Код: sql 1. 2. Дубли в результате ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 08:52 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Как можно пропустить итерацию при возникновении дубля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 08:53 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
dok11Как можно пропустить итерацию при возникновении дубля?Просто пропустить? INSERT IGNORE. Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 09:12 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Akina, Но при возникновении дубля нужно увеличить переменную чтобы в итоге было 4 уникальных id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 09:35 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
dok11при возникновении дубля нужно увеличить переменную чтобы в итоге было 4 уникальных id Ну так не майтесь фигнёй: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 09:49 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Ну и в начале проверяйте, что заданное cnt не больше количества записей в random - иначе будете генерить до морковкина заговенья... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 09:53 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Akina, Спасибо за помощь, понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2018, 14:25 |
|
||
|
Как избавиться от дублей в процедуре.
|
|||
|---|---|---|---|
|
#18+
Ещё вопросы к профессионалам так сказать. Данный выше метод судя по тестам, нормально отрабатывает при значительно кол-ве записей в бд и при отсутствии "дыр" в id'шниках. А если применить другой подход. 1. Определяем общее кол-во записей Код: sql 1. А уже потом выбирать из бд по limit со смещением rand() * (select count(*) from rand_table) Либо на php брать заранее несколько случайных смещений и выдёргивать из бд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2018, 08:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39637842&tid=1829883]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 373ms |

| 0 / 0 |
