2013-07-17 43 views
0

我有一個很好的小查詢工作。它查詢單 「的客戶」 表使用唯一的電話號碼獲取記錄

下面是表: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)吉姆和返回

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

回答

1
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 
+0

都能跟得上不知道是什麼了:你在你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'id in(通過電話從客戶端組中選擇min(id)')時使用正確的語法。OR'在第8行:SELECT id,name,address,phone FROM clients WHERE state IN('MO','LA','CT')AND foo> 40並且在ID中輸入(通過電話從客戶羣中選擇min(id))ORDER BY foo – JVMX

+1

請使用我的更新後的查詢。在老年人中,我有兩次「進去」。 –

+0

謝謝juergen d。 – JVMX