SQL - Return 不同的行,其中 1 列值用作不同的标识符
SQL - Return Distinct ROWS whereby 1 column value is used as Distinct identifier
我正在使用 SQL Server Management Studio v17.4。
我有一个查询 returns 一堆网站 url 和那个 url 的用户名。
查询returns每个用户名每个url。
但是,我只对每个唯一 url 的第一个用户名实例感兴趣。
下面是我当前的示例代码:
DROP TABLE IF EXISTS #TestUrls
SELECT
W.DomainName,
U.LoginUserName,
INTO #TestUrls
FROM WebCompany W
INNER JOIN Users U ON W.WebId = U.WebId
SELECT
concat('http://', DomainName, '.', '.co.uk') URL, LoginUserName Username
FROM #TestUrls
所以返回的数据样本如下:
URL | Username
www.test.co.uk | test1@test.co.uk
www.test.co.uk | test2@test.co.uk
www.test.co.uk | test3@test.co.uk
www.test.co.uk | test4@test.co.uk
www.test.co.uk | test5@test.co.uk
www.testxxx.co.uk | test1@testxxx.co.uk
www.testxxx.co.uk | test2@testxxx.co.uk
www.testxxx.co.uk | test3@testxxx.co.uk
www.testxxx.co.uk | test4@testxxx.co.uk
我要:
URL | Username
www.test.co.uk | test1@test.co.uk
www.testxxx.co.uk | test1@testxxx.co.uk
我尝试过使用 DISTINCT,但它仅 returns 您在其上使用 DISTINCT 语句的列。
注意我不是 SQL 的高级用户。我试图找到一个资源来满足我的要求,但没有真正成功。
在 SQL table 中没有 第一行 这样的东西。 SQL table 表示 无序 集。排序是数据,仅由列值提供。
您可以通过以下操作提取特定值,例如最小值:
select DomainName, MIN(LoginUserName) as LoginUserName
from #TestUrls
group by DomainName;
找到最小的登录用户名:
SELECT
concat('http://', DomainName, '.', '.co.uk') URL, min(LoginUserName) Username
FROM #TestUrls
GROUP BY DomainName
我正在使用 SQL Server Management Studio v17.4。
我有一个查询 returns 一堆网站 url 和那个 url 的用户名。
查询returns每个用户名每个url。
但是,我只对每个唯一 url 的第一个用户名实例感兴趣。
下面是我当前的示例代码:
DROP TABLE IF EXISTS #TestUrls
SELECT
W.DomainName,
U.LoginUserName,
INTO #TestUrls
FROM WebCompany W
INNER JOIN Users U ON W.WebId = U.WebId
SELECT
concat('http://', DomainName, '.', '.co.uk') URL, LoginUserName Username
FROM #TestUrls
所以返回的数据样本如下:
URL | Username
www.test.co.uk | test1@test.co.uk
www.test.co.uk | test2@test.co.uk
www.test.co.uk | test3@test.co.uk
www.test.co.uk | test4@test.co.uk
www.test.co.uk | test5@test.co.uk
www.testxxx.co.uk | test1@testxxx.co.uk
www.testxxx.co.uk | test2@testxxx.co.uk
www.testxxx.co.uk | test3@testxxx.co.uk
www.testxxx.co.uk | test4@testxxx.co.uk
我要:
URL | Username
www.test.co.uk | test1@test.co.uk
www.testxxx.co.uk | test1@testxxx.co.uk
我尝试过使用 DISTINCT,但它仅 returns 您在其上使用 DISTINCT 语句的列。
注意我不是 SQL 的高级用户。我试图找到一个资源来满足我的要求,但没有真正成功。
在 SQL table 中没有 第一行 这样的东西。 SQL table 表示 无序 集。排序是数据,仅由列值提供。
您可以通过以下操作提取特定值,例如最小值:
select DomainName, MIN(LoginUserName) as LoginUserName
from #TestUrls
group by DomainName;
找到最小的登录用户名:
SELECT
concat('http://', DomainName, '.', '.co.uk') URL, min(LoginUserName) Username
FROM #TestUrls
GROUP BY DomainName