जवाबों:
SELECT (
SELECT COUNT(*)
FROM tab1
) AS count1,
(
SELECT COUNT(*)
FROM tab2
) AS count2
FROM dual
FROM dual
।
अतिरिक्त जानकारी के रूप में, SQL सर्वर में एक ही चीज़ को पूरा करने के लिए, आपको बस क्वेरी के "FROM दोहरे" भाग को हटाने की आवश्यकता है।
सिर्फ इसलिए कि यह थोड़ा अलग है:
SELECT 'table_1' AS table_name, COUNT(*) FROM table_1
UNION
SELECT 'table_2' AS table_name, COUNT(*) FROM table_2
UNION
SELECT 'table_3' AS table_name, COUNT(*) FROM table_3
यह उत्तरों को ट्रांसपोज़्ड (एक कॉलम के बजाय एक तालिका प्रति पंक्ति) देता है, अन्यथा मुझे नहीं लगता कि यह बहुत अलग है। मुझे लगता है कि प्रदर्शन-वार उन्हें समकक्ष होना चाहिए।
मेरा अनुभव SQL सर्वर के साथ है, लेकिन क्या आप ऐसा कर सकते हैं:
select (select count(*) from table1) as count1,
(select count(*) from table2) as count2
SQL सर्वर में मुझे वह परिणाम मिलता है जो आप बाद में हैं।
अन्य थोड़ा अलग तरीके:
with t1_count as (select count(*) c1 from t1),
t2_count as (select count(*) c2 from t2)
select c1,
c2
from t1_count,
t2_count
/
select c1,
c2
from (select count(*) c1 from t1) t1_count,
(select count(*) c2 from t2) t2_count
/
जैसा कि मैं किसी अन्य उत्तर को नहीं देख सकता।
यदि आपको उप-प्रश्न पसंद नहीं हैं और आपकी प्रत्येक तालिका में प्राथमिक कुंजियाँ हैं, तो आप ऐसा कर सकते हैं:
select count(distinct tab1.id) as count_t1,
count(distinct tab2.id) as count_t2
from tab1, tab2
लेकिन प्रदर्शन के लिहाज से मेरा मानना है कि क्वासोई का समाधान बेहतर है, और जिसका मैं उपयोग करूंगा।
यहाँ मुझे साझा करने के लिए है
विकल्प 1 - विभिन्न तालिका से एक ही डोमेन से गिनती
select distinct(select count(*) from domain1.table1) "count1", (select count(*) from domain1.table2) "count2"
from domain1.table1, domain1.table2;
विकल्प 2 - एक ही तालिका के लिए अलग डोमेन से गिनती
select distinct(select count(*) from domain1.table1) "count1", (select count(*) from domain2.table1) "count2"
from domain1.table1, domain2.table1;
विकल्प 3 - गिनती की पंक्तियों के लिए "संघ सभी" के साथ एक ही तालिका के लिए अलग-अलग डोमेन से गिनती
select 'domain 1'"domain", count(*)
from domain1.table1
union all
select 'domain 2', count(*)
from domain2.table1;
एसक्यूएल का आनंद लें, मैं हमेशा करता हूं :)
select
t1.Count_1,t2.Count_2
from
(SELECT count(1) as Count_1 FROM tab1) as t1,
(SELECT count(1) as Count_2 FROM tab2) as t2
select (select count(*) from tab1) count_1, (select count(*) from tab2) count_2 from dual;
एक त्वरित छुरा साथ आया:
Select (select count(*) from Table1) as Count1, (select count(*) from Table2) as Count2
नोट: मैंने इसे SQL सर्वर में परीक्षण किया है, इसलिए From Dual
यह आवश्यक नहीं है (इसलिए विसंगति)।
पूर्णता के लिए - यह क्वेरी आपको दिए गए स्वामी के लिए सभी तालिकाओं की गणना करने के लिए एक क्वेरी बनाएगी।
select
DECODE(rownum, 1, '', ' UNION ALL ') ||
'SELECT ''' || table_name || ''' AS TABLE_NAME, COUNT(*) ' ||
' FROM ' || table_name as query_string
from all_tables
where owner = :owner;
आउटपुट कुछ इस तरह है
SELECT 'TAB1' AS TABLE_NAME, COUNT(*) FROM TAB1
UNION ALL SELECT 'TAB2' AS TABLE_NAME, COUNT(*) FROM TAB2
UNION ALL SELECT 'TAB3' AS TABLE_NAME, COUNT(*) FROM TAB3
UNION ALL SELECT 'TAB4' AS TABLE_NAME, COUNT(*) FROM TAB4
जिसे आप फिर अपनी गिनती प्राप्त करने के लिए चला सकते हैं। यह कभी-कभी एक आसान स्क्रिप्ट है।
यदि टेबल (या कम से कम एक कुंजी स्तंभ) एक ही प्रकार के हैं, तो पहले संघ बनाएं और फिर गणना करें।
select count(*)
from (select tab1key as key from schema.tab1
union all
select tab2key as key from schema.tab2
)
या अपना सैटमेंट लें और उसके चारों ओर एक और राशि () डालें।
select sum(amount) from
(
select count(*) amount from schema.tab1 union all select count(*) amount from schema.tab2
)
--============= FIRST WAY (Shows as Multiple Row) ===============
SELECT 'tblProducts' [TableName], COUNT(P.Id) [RowCount] FROM tblProducts P
UNION ALL
SELECT 'tblProductSales' [TableName], COUNT(S.Id) [RowCount] FROM tblProductSales S
--============== SECOND WAY (Shows in a Single Row) =============
SELECT
(SELECT COUNT(Id) FROM tblProducts) AS ProductCount,
(SELECT COUNT(Id) FROM tblProductSales) AS SalesCount
select @count = sum(data) from
(
select count(*) as data from #tempregion
union
select count(*) as data from #tempmetro
union
select count(*) as data from #tempcity
union
select count(*) as data from #tempzips
) a