mysql - 获取具有唯一电话号码的记录

标签 mysql

我有一个很好用的小查询。它查询单个“客户”表

这是表:SQLFiddle 在这里:http://sqlfiddle.com/#!2/1fcea

CREATE  TABLE `clients` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NULL ,
  `address` VARCHAR(45) NULL ,
  `state` VARCHAR(45) NULL ,
  `foo` VARCHAR(45) NULL ,
  `phone` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) );

INSERT INTO`clients` (`name`, `address`, `state`, `foo`, `phone`) VALUES ('Jim', '123 Main', 'MO', '876', '2038221661');
INSERT INTO`clients` (`name`, `address`, `state`, `foo`, `phone`) VALUES ('Tom ', '234 Elm', 'MO', '433', '2038221661');
INSERT INTO`clients` (`name`, `address`, `state`, `foo`, `phone`) VALUES ('Steve', '653 Pine', 'CT', '863', '5125901977');
INSERT INTO`clients` (`name`, `address`, `state`, `foo`, `phone`) VALUES ('Dave', '654 Oak', 'NV', '872', '8769085435');
INSERT INTO`clients` (`name`, `address`, `state`, `foo`, `phone`) VALUES ('Oscar', '622 FIrst ', 'LA', '625', '5125551212');

这是查询

SELECT id, 
       name, 
       address, 
       phone 
FROM   clients 
WHERE  state IN ( 'MO', 'LA', 'CT' ) 
       AND foo > 40 
ORDER  BY foo 

它返回:

2   Tom     234 Elm     2038221661
5   Oscar   622 FIrst   5125551212
3   Steve   653 Pine    5125901977
1   Jim     123 Main    2038221661

我不希望我们的客户服务人员多次调用任何地方。所以我只需要返回不同的电话号码。

我需要它压制 (1) Jim 和 Return

2   Tom     234 Elm 2038221661
5   Oscar   622 FIrst   5125551212
3   Steve   653 Pine    5125901977

最佳答案

SELECT id, 
       name, 
       address, 
       phone 
FROM   clients 
WHERE  state IN ( 'MO', 'LA', 'CT' ) 
       AND foo > 40 
       AND id in 
       (
          select min(id) from clients group by phone
       )
ORDER  BY foo 

关于mysql - 获取具有唯一电话号码的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712203/

相关文章:

php - CakePHP:在两个查询中完成的连接、belongsTo 和 hasMany 关系很少

javascript - 阅读有关数据库结果的更多信息

mysql - 选择所有日期时间的数据

javascript - 在以下情况下如何使用 AJAX 实现删除功能?

mysql - 如何根据另一列重置 id 列

MySQL的执行顺序

php - 查询在本地机器上工作正常,但在服务器上失败

MySQL从第三个表中进行复杂的选择查询过滤

php - IP冲突mysql

mysql - 如何修复mysql上的相关子查询