ahm*_*md0 6 sql sql-server select count distinct
我可以从一个表中的列执行以下SQL Server选择不同(或非重复名称),如下所示:
SELECT COUNT(DISTINCT [Name]) FROM [MyTable]
Run Code Online (Sandbox Code Playgroud)
但是,如果我有多个表(所有这些表都包含名为[Name]的名称字段),我需要知道两个或多个表中非重复名称的数量.
如果我运行这样的事情:
SELECT COUNT(DISTINCT [Name]) FROM [MyTable1], [MyTable2], [MyTable3]
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,"不明确的列名'名称'".
PS.所有三个表[MyTable1],[MyTable2],[MyTable3]都是之前选择的产物.
OMG*_*ies 18
澄清后,使用:
SELECT x.name, COUNT(x.[name])
FROM (SELECT [name]
FROM [MyTable]
UNION ALL
SELECT [name]
FROM [MyTable2]
UNION ALL
SELECT [name]
FROM [MyTable3]) x
GROUP BY x.name
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,请使用:
SELECT x.name, COUNT(DISTINCT x.[name])
FROM (SELECT [name]
FROM [MyTable]
UNION ALL
SELECT [name]
FROM [MyTable2]
UNION ALL
SELECT [name]
FROM [MyTable3]) x
GROUP BY x.name
Run Code Online (Sandbox Code Playgroud)
UNION将删除重复; UNION ALL不会,而且速度更快.
编辑:看到最近的评论后不得不改变.
这会给你你想要的吗?这会在合并所有表中的行后为每个人提供计数.
SELECT [NAME], COUNT(*) as TheCount
FROM
(
SELECT [Name] FROM [MyTable1]
UNION ALL
SELECT [Name] FROM [MyTable2]
UNION ALL
SELECT [Name] FROM [MyTable3]
) AS [TheNames]
GROUP BY [NAME]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18165 次 |
| 最近记录: |