我知道如果兩個表中的列數相等,可以在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