MySQL是一個廣泛使用的關系型數(shù)據(jù)庫管理系統(tǒng),支持多種操作,其中包括使用UNION操作符組合多個SELECT語句。UNION可以使用到查詢多個表或者同一張表中的不同列,看起來就像是將多個結果集合并成一個結果集。
不過,在使用UNION時有一個需要注意的問題:如何獲取合并后的結果總數(shù)?因為UNION只合并不同的行,所以使用SELECT COUNT(*)時會獲得不準確的結果。比如:
SELECT COUNT(*) FROM ( SELECT column1 FROM table1 UNION SELECT column2 FROM table2 ) AS t;
以上語句只能獲得結果集中不同行的總數(shù),而非合并后的總數(shù)。解決這個問題的方法是使用子查詢,在UNION操作符外部的SELECT語句中計算總數(shù)。
SELECT COUNT(*) FROM ( SELECT column1 FROM table1 UNION SELECT column2 FROM table2 ) AS t1 UNION SELECT COUNT(*) FROM ( SELECT column1 FROM table1 UNION SELECT column2 FROM table2 ) AS t2;
以上語句先使用UNION將兩個結果集合并成一個t1,接著在UNION外部使用子查詢SELECT COUNT(*)計算總數(shù)t2,并合并兩個結果集。通過這種方式,就可以獲取到合并后的總數(shù)。