2013-03-12 106 views
0

我有一个表,这样选择单个记录只

custno, type, color 
A1234, B, Red 
A1234, C, Blue 
A1277, B, Red 
A1288, A, Black 
A1288, B, Red 
A1289, A, Black 

我只需要获取唯一的记录A1277和A1289这只是一旦发现。

回答

2

这将显示在结果列表中的custNO

SELECT custNo 
FROM tableName 
GROUP BY custNO 
HAVING COUNT(*) = 1 

,但如果你想获得全排,

SELECT a.* 
FROM tableName a 
     INNER JOIN 
     (
      SELECT custNo 
      FROM tableName 
      GROUP BY custNO 
      HAVING COUNT(*) = 1 
     ) b ON a.custNo = b.custNo 
+0

我怎么会那么只有选择那些类型=“B” – macunte 2013-03-12 15:19:14

+0

这是你想要的吗? http://sqlfiddle.com/#!2/d53e0/3 – 2013-03-12 15:20:16

+0

是的,看起来不错。我有一个关于custNo的客户表CTABLE,我会在哪里放置这个连接?我尝试在内部连接的结尾添加,但这减少了我的结果数量。 – macunte 2013-03-12 16:52:29

0

试试这个,因为这将避免代价高昂的加盟operation--

SELECT custno,type,color FROM ( SELECT custno, type, color, COUNT(custno) OVER(PARTITION BY custno) CNT FROM tableName )TMP WHERE CNT=1