如何在一个查询中计算两个表中的行?

时间:2015-03-31 13:47:53

标签: mysql sql

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

示例:

tabel1  table2
id  1       1 
    2       2
    3       3

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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

试试这个:

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

此查询计算来自第一个表的不同id值(实际上是行数),并将其与第二个表中的行数相加。它在SQL Fiddle中有效。