我知道如果两个表中的列数相等,可以在select语句上使用UNION
。另外,另一个选项是在select子句中使用子查询。我还能使用什么?如何计算一个查询中两个表的行数?
例子:
tabel1 table2
id 1 1
2 2
3 3
我需要在一个查询总行的两个表中的数字:
...COUNT(table1.id) as tbc1, COUNT(table2.id) as tbc2...
我知道如果两个表中的列数相等,可以在select语句上使用UNION
。另外,另一个选项是在select子句中使用子查询。我还能使用什么?如何计算一个查询中两个表的行数?
例子:
tabel1 table2
id 1 1
2 2
3 3
我需要在一个查询总行的两个表中的数字:
...COUNT(table1.id) as tbc1, COUNT(table2.id) as tbc2...
使用子查询,如果需要添加FROM DUAL
:
SELECT
(SELECT COUNT(*) FROM TABLE1) As Table1Count,
(SELECT COUNT(*) FROM TABLE2) As Table2Count
[FROM DUAL]
必须改为'[FROM DUAL]'? – Sahe 2015-03-31 14:22:44
@Sahe,这两个子查询在你的'select'和'from'之间,好吧,我还没有完整的查询'FROM DUAL'是供你测试的。 – 2015-03-31 14:27:33
如果你在两个表格之间进行交叉连接,你会得到比你重新获得更多的行你需要在这里。您将得到表格的笛卡尔乘积,所以行数将是表格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中工作。
请编辑您的问题,并提供样品数据和预期结果。正如所写的,你不清楚你在问什么。 – 2015-03-31 13:55:36
更新的问题 – Sahe 2015-03-31 14:02:27