如何 return 仅在一列中显示不同的结果,同时允许在其他列中重复?

How to return only distinct results within one column, while allowing duplicates in other columns?

我很难弄清楚如何输出我想要的内容。我只想从一列中删除重复项,同时允许其他列中的重复项。我在内部使用主键和外键连接三个表 (a、b、c)。这是我所拥有的,有人会解释如何修改此查询以输出在 COLU2 中具有唯一值的记录,同时仍允许周围列(COLU1、COLU3)中的重复项吗?

查询:

DECLARE @Email NVARCHAR(50)
SET @Email = 'user@email.com'
SELECT a.nameF, a.nameL, a.email b.TestName, c.testScore FROM a
INNER JOIN b
ON a.a_primaryKey=b.a_foreignKey
INNER JOIN c
ON b.b_primaryKey=c.b_foreignKey
WHERE a.email = '%' + @Email + '%'

当前输出:

    COLU1      | COLU2 | COLU3
------------------------------
user@email.com | test1 | 80
user@email.com | test1 | 90
user@email.com | test2 | 83
user@email.com | test3 | 89

愿望清单输出:

    COLU1      | COLU2 | COLU3
------------------------------
user@email.com | test1 | 80
user@email.com | test2 | 83
user@email.com | test3 | 89

我在 SELECT 之后尝试了 DISTINCT 和 GROUP BY,但我无法让它工作。谢谢大家

I want to remove duplicates from one column only, while allowing duplicates in other columns.

使用聚合:要保留其不同值的所有列转到 GROUP BY 子句,您可以在另一列上使用聚合函数:

SELECT a.nameF, a.nameL, a.email b.TestName, MIN(c.testScore) score
FROM a
INNER JOIN b ON a.a_primaryKey=b.a_foreignKey
INNER JOIN c ON b.b_primaryKey=c.b_foreignKey
WHERE a.email = '%' + @Email + '%'
GROUP BY a.nameF, a.nameL, a.email b.TestName