|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Здравствуйте Уважаемые! есть таблица id | name | value 1 | n1 | v1 2 | n2 | v1 3 | n3 | v2 4 | n4 | 5 | n5 | 6 | n6 | v6 7 | n7 | v6 Подскажите пожалуйста как выбрать записи с уникальным вхождением value, только если value заполнен? Чтобы выборка выглядела следующим образом: id | name | value 1 | n1 | v1 3 | n3 | v2 4 | n4 | 5 | n5 | 6 | n6 | v6 Т.е. выбрать записи, в которых value, если заполнено, то встречается первый раз, и если не заполнено вообще. Пробовал запрос "SELECT * FROM table GROUP BY value", но в выборку попадает только первое пустое значение. DISTINCT также не дал результатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 10:34 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 11:11 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Akina, А комментарий можно? Как это работает что такое source? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 11:33 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNчто такое source?Таблица исходная, которая с данными, которая на скриншоте. Vladimir_KZNКак это работаетПросто переведи с английского на русский. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 11:36 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Понял, это моя таблица). Выполнил ваш запрос, результат: id | name | value 1 | n1 | v1 3 | n3 | v2 4 | n4 6 | n6 | v6 Делает тоже самое, что и мой запрос, берет только первое вхождение с пустым value, а должен брать все ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 11:40 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Akina, Спасибо за ответ, но не работает, в выборке должны участвовать все записи с пустым value ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 11:43 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Akina, Добавил в конце вашего варианта дополнительное условие OR value = '' и заработало! В итоге получился такой запрос SELECT t1.* FROM source t1 WHERE NOT EXISTS ( SELECT 1 FROM source t2 WHERE t1.value = t2.value AND t1.id > t2.id) OR t1.value = '' ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 12:03 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNне работает, в выборке должны участвовать все записи с пустым value Бред. Всё работает. Если value действительно пусто, т.е. NULL: fiddle . А вот если там строка нулевой длины... но кто ж виноват, что некоторые товарищи не могут корректно сформулировать задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 12:13 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNДелает тоже самое, что и мой запрос... Не то же самое. Ваш запрос берет произвольные значения из группы, а по условию требуется первая запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 12:20 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Спасибо всем огромное! Дай вам бог здоровья! Все получилось! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 12:23 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Новая проблема, внедрил данное решение, но по времени выполнение увеличилось более чем в 5 раз, можно ли как-то оптимизировать данный запрос или выполнить задачу другим способом? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 17:05 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Может все таки через DISTINCT или GROUP BY возможно решить данную задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 17:15 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Akina, Не правильно выразился, не пустое, а строка нулевой длины. Простите! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 17:17 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Сформировал такой запрос SELECT * FROM `source` GROUP BY IF ((value != ''), value, id) ORDER BY id ASC Скажите не сильно ли колхозно получилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 17:58 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNпо времени выполнение увеличилось более чем в 5 разНебось индексов нету... Vladimir_KZNне сильно ли колхозно получилось?Это ж фулскан гарантированный... уж лучше на UNION перепиши. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 20:06 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
AkinaVladimir_KZNпо времени выполнение увеличилось более чем в 5 разНебось индексов нету... Vladimir_KZNне сильно ли колхозно получилось?Это ж фулскан гарантированный... уж лучше на UNION перепиши. id - первичный ключ. Подскажите как переписать на union? Просто сам запрос большой, здесь я упростил его до определенной проблемы. В запросе много LEFT JOIN-ов с дополнительной выборкой из других таблиц ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 09:12 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNкак переписать на union? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Vladimir_KZNсам запрос большой, здесь я упростил его до определенной проблемы. В запросе много LEFT JOIN-ов с дополнительной выборкой из других таблиц Версия сервера какая? только ТОЧНО. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 10:00 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
AkinaВерсия сервера какая? только ТОЧНО. На рабочем сервере MySQL 5.7.27-0ubuntu0.16.04.1 На тестовой среде MySQL 5.6 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 10:25 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Akina Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
По-моему добавление еще одного SELECT не ускорит выполнение запроса. Поясните пожалуйста если ошибаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 10:49 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Вы ошибаетесь. Проверьте. Для ускорения создайте индекс (value, id), если это возможно. Vladimir_KZNНа рабочем сервере MySQL 5.7.27-0ubuntu0.16.04.1 На тестовой среде MySQL 5.6 Хреново, CTE недоступны. Подумайте об обновлении до восьмёрки, сколько можно на седой древности-то работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 11:06 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
AkinaВы ошибаетесь. Проверьте. Проверил, ваш запрос выполняется 0,0017, мой 0,0005 AkinaДля ускорения создайте индекс (value, id), если это возможно. Думаю индекс поменять не возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 11:35 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNСформировал такой запрос SELECT * FROM `source` GROUP BY IF ((value != ''), value, id) ORDER BY id ASC Скажите не сильно ли колхозно получилось? Уже писал: ваш запрос некорректен. Вам нужно получить первые записи в группах, а запрос возвращает случайные значения полей из групп. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 12:09 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
Vladimir_KZNваш запрос выполняется 0,0017, мой 0,0005Это ни о чём. Vladimir_KZNиндекс поменять не возможноЧто значит "поменять"??? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 12:56 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
paver, Не правильно выразился, давайте считать что нужно взять произвольное. Вопрос то не в этом PAVER ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 14:21 |
|
Помогите DISTINCT или GROUP BY
|
|||
---|---|---|---|
#18+
AkinaVladimir_KZNваш запрос выполняется 0,0017, мой 0,0005Это ни о чём. При внедрении запроса в рабочую среду с выборкой из 2000 записей ваш увеличивает скорость загрузки страницы до 5 секунд, мой - около 1 секунды. Понятно что тысячные секунды при выборке из 8 записей это ни о чем, но при внедрении на сайт разница значительна. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 14:25 |
|
|
start [/forum/topic.php?fid=47&msg=39860335&tid=1828976]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
219ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 614ms |
0 / 0 |