Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/749: Рейтинг темы: голосов - 749, средняя оценка - 4.81
18 / 31 / 4
Регистрация: 12.03.2010
Сообщений: 185
1

Как использовать DISTINCT?

25.04.2010, 21:58. Показов 144716. Ответов 11
Метки нет (Все метки)

Всем привет!
Приветдите, пожалуйста, самый простой, но понятный пример использования DISTINCT в запросах))
Заранее спасибо!))
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2010, 21:58
Ответы с готовыми решениями:

Как использовать оператор DISTINCT для отбора из excel в языке VBA
Кто знает, подскажите пожалуйста, как использовать оператор DISTINCT для отбора из excel в языке...

Как убрать ненужное из списка (Distinct)?
Привет ребят имеется такой вопрос. Допустим у меня есть список такого класса public int Id {...

Distinct в списке, как получить два значения?
Всем привет. Прошу помощи в примитивном деле, дано: public class Data { public...

DISTINCT убираем дубликаты, но как вывести остальные столбцы
Запрос такой. $res_basket= mysql_query("SELECT DISTINCT (id_user) FROM basket",$db) or die('Запрос...

11
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
26.04.2010, 00:12 2
Лучший ответ Сообщение было отмечено как решение

Решение

Простая таблица
Код
m |  Name
1  Ivan
2  Ivan
2  Piter
3  Piter
5  Piter
Например, месяцы, когда кто выходил на охрану объекта.
SQL
1
2
SELECT DISTINCT Name FROM TABLE
-- выведет всех охранников
SQL
1
2
SELECT DISTINCT m FROM TABLE
-- выведет все месяцы, когда объект охранялся
Чаще всего DISTINCT применяется во вложенных запросах и при объединении таблиц (JOIN) когда необходимо исключить повторяющиеся данные.
SQL
1
2
3
4
5
6
SELECT * 
FROM Orders 
WHERE snum = 
( SELECT DISTINCT snum 
FROM Orders 
WHERE cnum = 2001 );
Код
===============  SQL Execution Log ============== 
|                                                 | 
| SELECT *                                        | 
| FROM  Orders                                    | 
| WHERE snum =                                    | 
| (SELECT DISTINCT snum                           | 
| FROM Orders                                     | 
| Where cnum = 2001);                             | 
| =============================================== | 
|   onum       amt      odate      cnum     snum  | 
|  -----   ---------  ---------   ------  ------- | 
|   3003      767.19  10/03/1990   2001     1001  | 
|   3008     4723.00  10/05/1990   2006     1001  | 
|   3011     9891.88  10/06/1990   2006     1001  | 
================================================
Последний пример взят из книги Мартин Грабер "Понимание SQL (Understanding SQL)"
11
18 / 31 / 4
Регистрация: 12.03.2010
Сообщений: 185
26.04.2010, 00:41  [ТС] 3
О)) Спасибо большое!))
А то я писал DISTINCT *
и не мог понять зачем он нужен)))
А Understanding SQL хорошая штука,
я там про подзапросы читал!
+1
0
13198 / 6585 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
26.04.2010, 15:31 4
Лучший ответ Сообщение было отмечено как решение

Решение

Еще DISTINCT применяется внутри некоторых агригатных функций.
COUNT(name) - кол-во записей, где name не NULL
COUNT(DISTINCT name) - кол-во записей с разными name не равными NULL

SUM(x) - сумма всех x не равных NULL
SUM(DISTINCT x) - сумма разных x не равных NULL
7
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 95
19.08.2015, 15:49 5
А подскажите по DISTINCT - он справится с запросом в БД с несколькими миллионами строк?
0
1542 / 947 / 483
Регистрация: 14.04.2015
Сообщений: 3,508
10.09.2015, 11:26 6
справится конечно. только долго будет обрабатывать
0
Модератор
3891 / 2866 / 549
Регистрация: 21.01.2011
Сообщений: 12,424
10.09.2015, 11:36 7
Цитата Сообщение от igor3310qq Посмотреть сообщение
он справится с запросом в БД с несколькими миллионами строк
А зачем с практической точки зрения выбирать миллионы строк? Все равно человек не сможет их просмотреть
1
1 / 1 / 0
Регистрация: 21.07.2014
Сообщений: 21
15.08.2016, 16:12 8
Цитата Сообщение от Grossmeister Посмотреть сообщение
А зачем с практической точки зрения выбирать миллионы строк? Все равно человек не сможет их просмотреть
Нашелся умник: зачем вообще запросы к бд делать? Значит не для ручной обработки.
0
9 / 9 / 2
Регистрация: 14.05.2014
Сообщений: 87
15.09.2016, 22:47 9
в некоторых случаях безумно долго))) вплоть до исчерпания ресурсов хостинга. есть очередь запросов в MySQL, а есть план по безусловному переводу клиентов на более дорогие тарифы хостинга)))
0
18 / 17 / 2
Регистрация: 11.01.2013
Сообщений: 109
19.09.2016, 00:37 10
Цитата Сообщение от igor3310qq Посмотреть сообщение
А подскажите по DISTINCT - он справится с запросом в БД с несколькими миллионами строк?
Индексы используйте, а то умрет на хостинге. Тестируйте лучше на локальном сервере такие вещи в которых не уверены.
0
18 / 8 / 2
Регистрация: 12.02.2010
Сообщений: 200
17.02.2017, 21:54 11
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
справится конечно. только долго будет обрабатывать
А как тогда поисковые системы пишут найдено 5 миллионов триста тысяч страниц?
0
392 / 311 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
31.05.2017, 18:23 12
Мужики, всем привет!
Подскажите пожалуйста.

Есть таблица info.
В таблице есть столбец title.
Как выбрать все уникальные записи, которые содержат в себе слово "завершенные"?
PHP
1
mysqli_query("SELECT DISTINCT * FROM `info` WHERE ..... дальше не знаю");
Добавлено через 47 минут
Решил.
Дальше LIKE ))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2017, 18:23

Как можно не показывать столбец, который использует distinct в выборке?
Есть такой запрос: select distinct wayid, 'Тбилиси' as 'Город', Улица, , '' as...

Как определить количество одинаковых записей после фильтрации методом SELECT DISTINCT?
Доброго времени суток! Возможно ли вывести количество одинаковых записей (фамилий) в Lable, после...

Как использовать куки, чтобы потом было можно их использовать в запросах
Скажите полажуйста! как добавить ! куки , чтобы потом было можно использовать в запросах! тоесть ...

Оставить все как есть || использовать парсер xml || или использовать struct
Собственно имеется код... #include <io.h> #include <string> #include <vector> #include...

Как в VC++2008 использовать Framewok 2.0 или не использовать вообще??
интересует консольное приложение - по умолчанию .Net3.5, и поменять нельзя, бо соответствующий ...

Как правильно использовать стек, использовать вершину стека и т.п
Научите пожалуйста правильно использовать стек, использовать вершину стека и т.п. Просто стек очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.