【问题标题】:How to count rows from two tables in one query?如何在一个查询中计算两个表中的行数?
【发布时间】:2015-06-04 21:08:06
【问题描述】:

我知道如果两个表中的列数相等,则可以在 select 语句中使用UNION。此外,另一种选择是在 select 子句中使用子查询。我还能用什么?

例子:

tabel1  table2
id  1       1 
    2       2
    3       3

我需要在一个查询中从两个表中获取总行数:

...COUNT(table1.id) as tbc1, COUNT(table2.id) as tbc2...

【问题讨论】:

  • 请编辑您的问题并包含样本数据和所需结果。正如所写,不清楚你在问什么。

标签: mysql sql


【解决方案1】:

使用子查询,如果需要添加FROM DUAL:

SELECT 
    (SELECT COUNT(*) FROM TABLE1) As Table1Count, 
    (SELECT COUNT(*) FROM TABLE2) As Table2Count
[FROM DUAL]

【讨论】:

  • 必须是什么[FROM DUAL]
  • @Sahe,您的selectfrom 之间有两个子查询,我没有您的完整查询FROM DUAL 供您测试。
【解决方案2】:

如果您在两个表之间进行交叉连接,您将获得比您真正需要的更多的行。您将得到表的笛卡尔积,因此行数将是表一中的数字乘以表二中的数字。

但是,如果您使用 COUNT(distinct [column]) 对两个表的 id 值执行聚合,则仍然可以使用交叉连接。

试试这个:

SELECT COUNT(distinct t1.id) + COUNT(distinct t2.id) AS totalRows
FROM firstTable t1, secondTable t2;

此查询计算来自第一个表的不同 id 值(本质上是行数),并将其与来自第二个表的行数相加。它在SQL Fiddle 工作。

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2021-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多