在SQL中查找唯一行

时间:2018-05-31 22:53:11

标签: sql

我有以下两个表:

表1

Row_Id    SR_NUM
------------------
100       1-12345
101       1-34567

表2

SRA_Id   Value
----------------
100      Test
101      (Blank)
100      (Blank)
100      (Blank)
101      (Blank)

当我创建以下查询时:

SELECT DISTINCT 
    a. SR_NUM,
    b.value
FROM
    Table_1 a,
    Table_2 b
WHERE 
    a.row_id = b.sra_id

我在输出中得到3条记录(2表示100 - 一个值为'Test',另一个值为(Blank))

我希望它只显示100条有价值的记录,而不是空白条。

你能告诉我我做错了什么吗?

感谢。

2 个答案:

答案 0 :(得分:1)

GROUP BY a.SR_NUM并选择例如MAX(b.VALUE)可能就是你想要的。

SELECT a.SR_NUM,
       MAX(b.VALUE) VALUE
       FROM Table_1 a
            INNER JOIN Table_2 b
                       ON a.ROW_ID = b.SRA_ID
       GROUP BY a.SR_NUM;

(如果MAX()为您提供了"(空白)"(我认为您的意思是NULL),请将其替换为MIN()。)

答案 1 :(得分:0)

我不知道这是否是您想要的,但您可以尝试:

SELECT a.SR_NUM, b.value FROM Table_1 as a 
JOIN Table_2 as b ON (a.row_id = b.sra_id AND b.value != "(BLANK)");