LINUX.ORG.RU

Переписать запрос с использованием distinct

 distinct, ,


0

0

Ради спортивного интереса хотел бы видеть следуюющий запрос с использованием distinct а то я чтото не осилил..

select
	* 
from
	tmp_app_guids2modules bt
group by 
	bt.app_guid,
	bt.app_platform,
	bt.app_version,
	bt.module_guid;

таблица

+------------------+-----------+------+-----+---------+-------+
| Field            | Type      | Null | Key | Default | Extra |
+------------------+-----------+------+-----+---------+-------+
| app_guid         | char(36)  | YES  | MUL | NULL    |       |
| app_platform     | char(16)  | YES  |     | NULL    |       |
| app_version      | char(16)  | YES  |     | NULL    |       |
| app_name         | char(128) | YES  |     | NULL    |       |
| app_id_string    | char(128) | YES  |     | NULL    |       |
| module_guid      | char(36)  | YES  |     | NULL    |       |
| module_name      | char(128) | YES  |     | NULL    |       |
| module_id_string | char(128) | YES  |     | NULL    |       |
+------------------+-----------+------+-----+---------+-------+

★★★★★
Ответ на: комментарий от aldayneko

Все строки с уникальнымы комбинациями app_guid,app_platform,app_version,module_guid. В строке должны быть все столбцы, а не только те которые есть критерием для поиска

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

это «group by» что-ли условие для поиска?

select distinct * from table
where условие
ukr_unix_user ★★★★
()
Ответ на: комментарий от ZuBB

А какая СУБД то хоть? В postgress например запрос работать не будет - надо поля которые не в group by или в group by же и включить или использовать агрегатную функцию на них.

А вообще не совсем понятно что ты хочешь получить в итоге.

Уникальными комбинациями 4 полей - имеется в виду что то типа group by field1,field2,field3,field4 having count(*)=1 или что то другое?

grassmeister
()

DISTINCT же работает на несколько полей тоже. Берёшь поля, сочетание которых должно быть уникальным и вставляешь в свой запрос. Потом недостающие поля, наверное, приделываются JOIN'ом.

А вообще вот люди рекомендуют использовать GROUP BY: http://stackoverflow.com/questions/54418/how-do-i-or-can-i-select-distinct-on...

Hoodoo ★★★★★
()
Ответ на: комментарий от Hoodoo

DISTINCT же работает на несколько полей тоже

знаю

Потом недостающие поля, наверное, приделываются JOIN'ом

и получаем ..исходную таблицу. потому что с правой таблицы нужно взять только 1роу. а как это сделать я не нашел и никто так и не подсказал.

А вообще вот люди рекомендуют использовать GROUP BY

оно так и было изначально, но использование GROUP BY для нахождения уникальных полей не совсем правильно. поэтому и спросил о DISTINCT. впрочем неважно, оставил GROUP BY потому что оно просто работает и не особо медленнее DISTINCT

ZuBB ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.