当前位置: 首页 > 面试题库 >

从多个表中选择COUNT(DISTINCT [name])

昝唯
2023-03-14
问题内容

我可以从一个表中的列中执行以下SQL Server选择不同(或非重复名称)的操作,如下所示:

SELECT COUNT(DISTINCT [Name]) FROM [MyTable]

但是,如果我有多个表(所有这些表都包含名为[Name]的名称字段),并且我需要知道两个或多个表中非重复名称的计数,该怎么办?

如果我运行这样的事情:

SELECT COUNT(DISTINCT [Name]) FROM [MyTable1], [MyTable2], [MyTable3]

我收到一个错误,“歧义列名’Name’”。

PS。这三个表[MyTable1],[MyTable2],[MyTable3]都是先前选择的产品。


问题答案:

澄清后,使用:

  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

如果我理解正确,请使用:

  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

UNION将删除重复项;UNION ALL不会,并且速度更快。



 类似资料:
  • 我有一个名为“users”的表,它有一个列名“gender”,其值对于所有受影响的行都是“male”和“female”。 我想要一排-

  • 问题内容: 当您限制通常用于分页的SQL查询返回的行数时,有两种方法可确定记录总数: 方法1 将选项包括在原始选项中,然后通过运行获取总行数: 方法二 正常运行查询,然后通过运行获取总行数 哪种方法最好/最快? 问题答案: 这取决于。请参阅有关此主题的MySQL Performance Blog帖子:http : //www.mysqlperformanceblog.com/2007/08/28/

  • 问题内容: 我想根据URL字符串选择一些ID,但对于我的代码,它仅显示第一个。如果我写手册的ID是伟大的。 我有这样的网址http://www.mydomain.com/myfile.php?theurl=1,2,3,4,5(ids) 现在在myfile.php中,我有sql连接,并且: 如果我使用这个: 我得到正确的结果。现在,如果我使用下面的代码,它将无法正常工作: 有什么建议? 问题答案:

  • 问题内容: 我能够同时获取mysql查询结果的值和行。 但是我在努力获得查询的单个输出。例如: 我需要显示结果。但是我没有得到结果。 我尝试了以下方法: 但是我没有成功显示(获取)实际值。 问题答案: 您需要使用关键字为聚合设置别名,以便从中进行调用

  • 问题内容: 我有一个名为“工作”的表。对于特定用户,作业可以是活动的,已归档的,过期的,待处理的或已关闭的。现在,每个页面请求都生成5个COUNT查询,为了进行优化,我试图将其减少为单个查询。到目前为止,这是我所拥有的,但这仅比5个单独的查询要快。请注意,我已经简化了每个子查询的条件,以使其更易于理解,但是完整查询的行为相同。 有没有一种方法可以在不使用无效子查询的情况下在同一查询中获得这5个计数

  • 我能够同时获得mysql查询结果的值和行。 但我很难获得查询的单个输出。例如: 我需要显示结果。但我没有得到结果。 我尝试了以下几种方法: 但我没有成功地显示(获取)实际值。