Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Добрый день. Помогите, пожалуйста, с правильным селектом. Есть результат селекта из нескольких таблиц в виде: Col_1| Col_2 | Col_3 | Col_4 1155 | 500001 | 1 | 222 1155 | 300001 | 1 | 333 1155 | 500001 | 2 | 444 1155 | 300001 | 2 | 555 1156 | 700001 | 3 | 666 Нужно из этой выборки отобрать строки только с уникальным значением в Col_3. В случае, если значения в Col_3 повторяются, то брать ту строку, где соответствующее ей значение в Col_2 меньше. Т.е. результат будет такой: Есть результат селекта из нескольких таблиц в виде: Col_1| Col_2 | Col_3 | Col_4 1155 | 300001 | 1 | 333 1155 | 300001 | 2 | 555 1156 | 700001 | 3 | 666 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 17:16 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 22:10 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Akina, здравствуйте, спасибо за ответ!! Никак не могу понять какой из указанных по ссылке вариантов лучше применить к моему случаю. Вроде как должно быть совсем просто, т.к. таблица у меня одна. Можете, пожалуйста, хоть примерно подсказать как будет выглядеть такой запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2018, 15:20 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
finalmanне могу понять какой из указанных по ссылке вариантов лучше применить к моему случаюА чё тут понимать? У тебя источник данных - запрос. То есть две копии в запросе - плохо, а индексы отсутствуют. T3/T4 отпадают, надо выбирать из T1/T2, и когда выберешь - или реализуешь на переменных, или используй бабкин метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2018, 17:13 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Все равно никак не получается составить правильный запрос. Помогите, пожалуйста. Например, у меня будет возможность исходные данные записать в отдельную таблицу и обращаться только к ней одной. Как тогда из неё выбрать только уникальные значения по одному из полей (Col_3) с условием выбора по минимальному значению в соседнем поле(Col_2)? Т.е. из таблицы: Col_1| Col_2 | Col_3 | Col_4 1155 | 500001 | 1 | 222 1155 | 300001 | 1 | 333 1155 | 500001 | 2 | 444 1155 | 300001 | 2 | 555 1156 | 700001 | 3 | 666 Получить: Col_1| Col_2 | Col_3 | Col_4 1155 | 300001 | 1 | 333 1155 | 300001 | 2 | 555 1156 | 700001 | 3 | 666 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 00:18 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
finalmanНапример, у меня будет возможность исходные данные записать в отдельную таблицу и обращаться только к ней одной.Тогда ограничение на однопроходность снимается, и можно использовать любой из методов. Просто возьми решение и аккуратно поиск-замена по всем именам таблиц и полей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 07:50 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Может кому-то тоже будет полезно. Получилось сделать следующим образом. select * from table where col_2 in (select A from select MIN (col_2) as A, col_3 from table group by col_3)) and col_3 in (select B from (select MIN (col_2), col_3 as B from table group by col_3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 13:57 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
finalmanПолучилось сделать следующим образом. select * from table where col_2 in (select A from select MIN (col_2), col_3 from table group by col_3)) and col_3 in (select B from (select MIN (col_2), col_3 as B from table group by col_3) Решение ошибочное. Оно не гарантирует, что и А, и В будут взяты из одной и той же записи подзапроса. Правильно - так: Код: sql 1. 2. 3. 4. 5. Следует учитывать, что при наличии дубликатов будут выведены все они, а не один... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 14:07 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Akina, спасибо! Скорректировал по рекомендации, заодно и отрабатывать скрипт стал быстрее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 16:11 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Появилось новое условие для выборки, пока никак не получается реализовать. Может сможете подсказать? Нужно в таблице отобрать значения где по столбцам А, B, С значения повторяются, но при этом по D различаются. Т.е. из таблицы: Col_A | Col_B | Col_C | Col_D | Col_ E ffffffff | 22222 | 1000 | 158 | red ffffffff | 33333 | 1000 | 216 | yellow eeeee | 22222 | 1000 | 706 | blue eeeee | 33333 | 1000 | 706 | white Получить: Col_A | Col_B | Col_C | Col_D | Col_ E ffffffff | 22222 | 1000 | 158 | red ffffffff | 33333 | 1000 | 216 | yellow ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 17:45 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
finalmanотобрать значения где по столбцам А, B, С значения повторяются, но при этом по D различаютсяНу и группируешь в подзапросе по А, B, С, а по D берёшь максимум либо минимум... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 07:33 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Akina, тут немного другая ситуация. Если возьму MAX или MIN значение, то только его и получу. Мне же нужно получить оба если они не равны и не получить ничего если совпадают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 09:46 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
ЯННП. Объясните в своём примере: finalmanТ.е. из таблицы: Col_A Col_B Col_C Col_D Col_ Effffffff 22222 1000 158 red ffffffff 33333 1000 216 yelloweeeee 22222 1000 706 blueeeeee 33333 1000 706 white Получить: Col_A Col_B Col_C Col_D Col_ Effffffff 22222 1000 158 red ffffffff 33333 1000 216 yellow для КАЖДОЙ исходной записи, почему она оставлена или отброшена. ПОДРОБНО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 09:53 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Akina, простите!! Обнаружил что в примере ошибся. У меня в B значения были разные а должны быть одинаковые. Вот так получается. Col_A | Col_B | Col_C | Col_D | Col_ E ffffffff | 22222 | 1000 | 158 | red__________нужно оставить, т.к. есть другая запись где совпадают значения A+B+C, но отличается в D ffffffff | 22222 | 1000 | 216 | yellow________нужно оставить, т.к. есть другая запись где совпадают значения A+B+C, но отличается в D eeeee | 33333 | 1000 | 706 | blue___________нужно убрать, т.к. есть другая запись где совпадают значения A+B+C+D eeeee | 33333 | 1000 | 706 | white__________нужно убрать, т.к. есть другая запись где совпадают значения A+B+C+D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:17 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
finalmanВот так получается.Над полем ввода есть куча кнопок с тегами. А у Вас получается нечитаемая лапша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:35 |
|
||
|
Отфильтровать выборку с учетом повторяющихся значений
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. Если в таблице могут быть полные дубликаты (т.е. включая и поле Е), и нужно в этом случае вывести одну копию такой записи, следует заменить COUNT(*) на COUNT(DISTINCT E). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 10:39 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39619853&tid=1829941]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 374ms |

| 0 / 0 |
