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

查询:

DECLARE @Email NVARCHAR(50)
SET @Email = '[email protected]'
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
------------------------------
[email protected] | test1 | 80
[email protected] | test1 | 90
[email protected] | test2 | 83
[email protected] | test3 | 89


愿望清单输出:

    COLU1      | COLU2 | COLU3
------------------------------
[email protected] | test1 | 80
[email protected] | test2 | 83
[email protected] | test3 | 89


我在SELECT之后和GROUP BY一起尝试过DISTINCT,但无法正常工作。谢谢大家

最佳答案

我只想从一列中删除重复项,而允许在其他列中重复项。


使用聚合:要保留其不同值的所有列都转到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

关于mysql - 如何只返回一列中不同的结果,同时允许其他列中有重复的结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59690918/

10-16 01:28