2015-09-29 3 views
0

Я довольно новичок в SQL, я встретил запрос, который нуждается в помощи. У меня есть два следующих схем:SQL-запрос, выберите строки с одним столбцом с одним значением

  • клиентов (CID, CNAME)
  • торговли (goodsID, ИДС)

Я хочу, чтобы найти клиентов, которые только купить один вид товаров, а это значит, для одного и того же идентификатора cID, он может соединяться только с одним и тем же товаромID в кортежах Trade.

Например:

+----------+-------+ 
| cID  |goodsID| 
+----------+-------+ 
| 1000  | 1  | 
| 1000  | 1  | 
| 1000  | 1  | 
| 1001  | 2  | 
| 1001  | 3  | 
| 1002  | 4  | 
+----------+-------+ 

Вывод должен быть:

+----------+ 
| cID  | 
+----------+ 
| 1000  | 
| 1002  | 
+----------+ 

ответ

1
SELECT cID, count(goodsID) 
FROM (
     SELECT DISTINCT cID, goodsID 
     FROM table1 
    ) as T 
GROUP BY cID 
HAVING count(goodsID) = 1 
2

Я думаю, что вам нужен простой запрос, как это:

SELECT CID 
FROM yourTable 
GROUP BY CID 
HAVING COUNT(DISTINCT goodsID) = 1; 
+0

Спасибо! Он отлично работает! – user2567753

+0

Не был уверен, мог ли он использовать этот способ. Теперь я знаю в следующий раз :) –

+0

@ user2567753 http://stackoverflow.com/help/someone-answers;). –

Смежные вопросы