|
Модераторы: skyboy |
|
polin11 |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 122 Регистрация: 6.6.2015 Репутация: нет Всего: нет |
Есть запрос, он выполняется без ошибок, но есть дублирующие записи
При попытке использовать DISTINCT, а именно
возникает проблема: в конструкции SELECT DISTINCT выражения ORDER BY должны быть в списке выборки не могу сообразить, как избавиться от дублей "Field2" |
||||
|
|||||
Snowy |
|
||||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 1 Всего: 484 |
По данной логике - никак.
Допустим имеем записи: AAA BBB AAA AAA BBB AAA Как в таком случае сортировать AAA, если он подпадает и туда и туда? Тут нужно корректнее определиться, как сортировать. Например, если хоть одна из AAA равна своему "Field3"
или, оставлять оба варианта, если если есть и такой и такой вариант:
|
||||
|
|||||
polin11 |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 122 Регистрация: 6.6.2015 Репутация: нет Всего: нет |
Работает такой вариант
У меня еще один вопрос, есть аналогичный запрос с LIMIT
поправьте меня, если я не прав, при выполнении запроса планировщик пробежит ВСЕ записи, выполнит поиск по условию "Field1" LIKE 'val%', затем отсортирует по Ord и выдаст первые 20 записей, то есть по времени и ресурсам будет аналогично, этому же запросу, но без LIMIT 20 |
||||
|
|||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 1 Всего: 484 |
Не работает. Если одновременно будут записи с "Field2" = "Field3" и "Field2" <> "Field3", то запись будет в двух экземплярах, как в моём втором варианте. case здесь не нужен. Просто
По дистинкту - да. Используй group by. Distinct - кака. |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
На самом деле (акелла уверял) "group by" (ну и destinct соответсвенно) не детерменированны. Т.е. результат зависит от левой пятки движка мускуля. (Мы же про мускуль сейчас говорим ?)
А вообще нечего делать из мускуля оракл ) Что мешает в приложении нужные сравнения сделать ? |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Чё? бред какой-то, право слово...
Нет. Будь так - LIMIT 1,1 и LIMIT 100000,1 не различались бы практически по скорости, тогда как на деле разница будет не в разы - на порядки... На деле будут отсортированы первые 20, без сортировки остатних. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |