簡體   English   中英

如何僅返回一列中的不同結果,同時允許其他列中的重復結果?

[英]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 和 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM