在sql查询中返回DISTINCT行

时间:2014-12-16 16:38:41

标签: sql sql-server

我有两张桌子。一个是具有clientID和实体的客户端,另一个是具有clientID和LogonID的LogOnLink。 LogOnLink表可以多次输入相同的clientID。所以我正在尝试运行查询,我在其中搜索实体加入LogonLink表。我遇到的问题是,如果一个实体在logonLink表中20次,我得到的名称返回二十次。我如何制作它,以便它只显示一个实体的一个实例。请记住,可能有类似的实体名称,所以如果我在数据库中有“公司1”和“公司2”,我需要向两家公司展示是否有人在公司中输入。我尝试过做DISTINCT,但它没有通过LogOnLink表中的clientID来区分它。这是我到目前为止所拥有的。

SELECT DISTINCT ll.logonID, entity 
FROM clients c 
INNER JOIN LogOnsLink ll ON ll.clientID = c.clientID 
WHERE c.entity LIKE '%Com%' 
ORDER BY entity

Clients Table
------------------------------------
clientID    entity
2             Company A
8             Company B
43            Company C

LogOnLinks Table
------------------------------------
LogonLinkID    clientID    LogonID
4                  2           3
5                  2           7
21                 8           20
6                  2           9
3                  8           10
45                 43          3

2 个答案:

答案 0 :(得分:2)

您需要对来自LogOnsLink的数据执行某种聚合,否则您将总是获得20行......

试试这个

SELECT entity, COUNT(ll.logonID) AS MaxlogonIDs
FROM clients c 
    INNER JOIN LogOnsLink ll ON ll.clientID=c.clientID 
WHERE c.entity LIKE '%Com%' 
GROUP BY entity
ORDER BY entity

SELECT DISTINCT entity
FROM clients c 
    INNER JOIN LogOnsLink ll ON ll.clientID=c.clientID 
WHERE c.entity LIKE '%Com%' 
ORDER BY entity

答案 1 :(得分:0)

试试这个

SELECT ll.logonID, DISTINCT(entity) 
FROM Clients c INNER JOIN LogOnsLink ll 
ON ll.clientID=c.clientID 
WHERE c.entity LIKE '%Com%' 
ORDER BY entity