【问题标题】:Select individual records only仅选择单个记录
【发布时间】:2013-03-12 15:05:39
【问题描述】:

我有一张这样的桌子

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

我只需要检索仅找到一次的唯一记录 A1277 和 A1289。

【问题讨论】:

    标签: sql select db2


    【解决方案1】:

    这将在结果列表中显示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
    

    【讨论】:

    • 我怎么才能只选择那些 Type = 'B'
    • 是的,看起来不错。我有一个链接到 custNo 的客户表 CTABLE,我将把这个连接放在哪里?我试图在内部连接的末尾添加,但这减少了我的结果数量。
    【解决方案2】:
    SELECT custno
    FROM yourTable
    GROUP BY custno
    HAVING COUNT(*) = 1
    

    Example Fiddle

    【讨论】:

      【解决方案3】:

      试试这个,因为这样可以避免代价高昂的连接操作--

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

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2014-10-19
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-30
        • 2012-02-19
        相关资源
        最近更新 更多