2014-07-19 30 views
0

因爲我不太瞭解更復雜的SQL SELECT語句,我想這裏只是問這裏,因爲很難找到正確的主題。從兩個表中查看同樣排序的表的用戶ID

我誰擁有酷似

TABLE A (id (INT(11)), time (VARCHAR(10));) 
TABLE B (id (INT(11)), time (VARCHAR(10));) 

相同的結構現在我想要一個SELECT來算一個特定ID的entrys兩個表中兩個表。

SELECT COUNT(*) FROM TABLE A WHERE id = '1'; 
SELECT COUNT(*) FROM TABLE B WHERE id = '1'; 

所以我認爲如果我使用一個SELECT而不是一個SELECT,數據庫性能會好很多。爲幫助了

回答

1
SELECT COUNT(*) as count, 'tableA' as table_name FROM TABLEA WHERE id = '1' 
union all 
SELECT COUNT(*), 'tableB' FROM TABLEB WHERE id = '1' 
+0

作品 - 感謝尤爾根:) – Kris

0

感謝你能做到這一點,如:

select count(*) 
from (
    select id from t1 where id = 1 
    union all 
    select id from t2 where id = 1 
) as t 

另一種方法是:

select sum(cnt) 
from (
    select count(*) as cnt from t1 where id = 1 
    union all 
    select count(*) as cnt from t2 where id = 1 
) as t 
+0

他們都給了我兩個計數的總和。我想單獨獲得他們的價值 – Kris

1

如果你想單獨計數單排,你可以使用子查詢

SELECT 
    (SELECT COUNT(*) FROM TABLE A WHERE id = '1') a_count, 
    (SELECT COUNT(*) FROM TABLE B WHERE id = '1') b_count; 
+0

這個解決方案仍然是性能相同,我會做2選擇...因爲你仍然在兩個選擇有點做。 這是我用於「juergen d」的解決方案的時間量的兩倍 – Kris

+0

@Kris「union all」版本和此查詢具有幾乎相同的查詢計劃並且花費相同的時間量 – FuzzyTree

+0

對不起 - 我的調試器搞砸了它: - 你是對的,我認爲在SELECT中使用SELECT可能會有更好的版本 - 但不知怎的,它似乎並不像它 – Kris

相關問題