|
|
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
Из таблицы нужно выбрать все записи, у которых определенное поле совпадает не более, чем n раз, а потом на эту выборку наложить условие LIMIT 50. После всех извращений получил такой запрос (для n = 2) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Его можно как-нибудь оптимизировать. Смущает меня HAVING по всей таблице. Хотя планы отличные С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 14:54:33 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
помимо группировки дубли можно выбрать при помощи JOIN, EXISTS-подзапроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 15:26:09 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, при условии, что кроме PHONE_ID в таблице есть ещё поля, по которым можно отличать одну запись от другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 15:28:04 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
Условие Код: sql 1. во внешнем запросе - лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 16:05:57 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
AkinaУсловие Код: sql 1. во внешнем запросе - лишнее. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY ad range fk_ads_phone fk_ads_phone 9 NULL 197 Using where 2 DEPENDENT SUBQUERY sad range fk_ads_phone fk_ads_phone 9 NULL 197 Using where; Using index Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY ad ALL NULL NULL NULL NULL 48601 Using where 2 DEPENDENT SUBQUERY sad range fk_ads_phone fk_ads_phone 9 NULL 197 Using where; Using index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:39:39 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхпомимо группировки дубли можно выбрать при помощи JOIN, EXISTS-подзапроса.Что-то не соображу как Добрый Э - Эхпри условии, что кроме PHONE_ID в таблице есть ещё поля, по которым можно отличать одну запись от другой.Само собой есть первичный ключ - поле id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 19:41:09 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
На реальной базе мой запрос уходит в аут :( А заказчик кричит "хочу" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 00:02:48 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
17105176 мне уже лень переписывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 00:44:43 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
miksoft, Спасибо большое. Все ожило. Самое обидное, что теперь я вспоминаю, что и сам на эти грабли наступал. В итоге запрос стал таким Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 02:35:27 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
Опять... ну если Код: sql 1. то Код: sql 1. даёт FALSE, и условие Код: sql 1. лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 09:13:39 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, IMHO, но если ориентироваться на [NOT] EXISTS подзпросы, то лучше не использовать в них агрегацию, а напрямую проверять - есть запись с таким же номером телефона, но с другим ID (WHERE sad.`phone_id` = ad.`phone_id` and sad.id != ad.id). Что касается JOIN-а, то суть в том, чтобы твой IN-подзапрос просто переписать в форму JOIN, сделав его некоррелированным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 12:01:31 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
Akinaлишнее.Если поле NULL, то не нужно дергать подзапрос. Или я не прав? Добрый Э - Эхно с другим IDМне нужно вытянуть записи у которых дубликатов определенное количество. Т.е. если дубликата 3, то в данный запрос записи не попадают Добрый Э - Эхсуть в том, чтобы твой IN-подзапрос просто переписать в форму JOIN,Вот я и не пойму, как я в таком джойне агрегацию сделаю? Или джойнить не таблицу, а подзапрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 16:40:12 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Если поле NULL, то не нужно дергать подзапрос. Или я не прав? Неправ. Это SQL-сервер, а не программа на процедурном языке программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 16:43:11 |
|
||
|
Выборка дубликатов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Или джойнить не таблицу, а подзапрос?вот именно. делаешь изначально подзапрос, в котором вычисляешь дубли с нужным числом повторений (обычный GROUP BY + HAVING). далее джойнишь исходную таблицу на результат этого подзапроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 09:24:20 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38859239&tid=1833676]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
127ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 401ms |

| 0 / 0 |
