Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Помогите собрать запрос ...


Автор: nIkTo 15.12.2011, 19:44
Добрый день помогите собрать запрос ...
Таблица MySQL tabl имеет поле phone varchar(20), всего около 15000 записей
Необходимо выбрать записи с уникальными телефонными номерами.

Автор: nIkTo 15.12.2011, 20:16
К примеру:
Код

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int unsigned NOT NULL auto_increment,
  `phone` varchar(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

INSERT INTO `test`(`phone`) VALUE ('1234');
INSERT INTO `test`(`phone`) VALUE ('1234');
INSERT INTO `test`(`phone`) VALUE ('2548');
INSERT INTO `test`(`phone`) VALUE ('2345');
INSERT INTO `test`(`phone`) VALUE ('2548');
INSERT INTO `test`(`phone`) VALUE ('9584');


Надо выбрать 2345 и 9584

Автор: Данкинг 15.12.2011, 20:17
Код

SELECT * from tabl GROUP BY phone

 smile 

Автор: Akina 15.12.2011, 20:19
SELECT DISTINCT 

Автор: nIkTo 15.12.2011, 20:20
Данкинг, не то, смотри пост выше

Добавлено через 2 минуты и 9 секунд
Может неправильно выразился, не уникальные ... а НЕ повторяющиеся (встречающиеся один раз), то есть: 
1234
1234
2548
2345
2548
9584
выбрать надо 2345 и 9584

Автор: Данкинг 15.12.2011, 20:28
Цитата(nIkTo @  15.12.2011,  21:20 Найти цитируемый пост)
Может неправильно выразился, не уникальные ... а НЕ повторяющиеся 

Вообще-то это уже совсем другое задание. smile 
Код

SELECT * from tabl WHERE phone in (select phone FROM tabl HAVING count(phone)=1 GROUP BY phone)

Автор: nIkTo 15.12.2011, 20:40
Данкинг, а так будет правильно (результат то же) ?
Код

SELECT * FROM `test` GROUP BY `phone` HAVING COUNT(`phone`)=1;

Автор: Данкинг 15.12.2011, 20:45
Ну да, вроде так то же самое получается результатом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)