Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MYSQL:GROUP BY के साथ COUNT, LEFT JOIN और WHERE क्लॉज शून्य मान वापस नहीं करता है

शून्य पंक्तियों को वापस करने का कारण यह है कि आप तालिका_1 में किसी मान पर समूह बना रहे हैं। चूंकि तालिका_1 में कोई मान नहीं है, इसलिए लौटने के लिए कोई पंक्तियाँ नहीं हैं। दूसरे तरीके से कहा, अगर आपने ग्रुप बाय से अपनी क्वेरी में t1.any_col लौटाया है तो:

SELECT `t1`.`any_col`, COUNT(`t2`.`name`) 
FROM `table_1` `t1` 
    LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id` 
WHERE `t1`.`another_column` = 123 
GROUP BY `t1`.`any_col` 

जब कोई पंक्तियाँ नहीं थीं तो t1.any_col के लिए क्या प्रदर्शित होगा? आप जो चाहते हैं उसे प्राप्त करने का एकमात्र तरीका है कि आप अपने परिणामों को किसी अन्य क्वेरी के साथ जोड़ दें जो तालिका_1 में कोई पंक्तियों की जांच नहीं करता है। इस उदाहरण में, मैं केवल कुछ ऐसा करने के लिए INFORMATION_SCHEMA दृश्य का उपयोग कर रहा हूं जिसके विरुद्ध मैं क्वेरी कर सकता हूं।

SELECT COUNT(`t2`.`name`) 
FROM `table_1` `t1` 
    LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id` 
WHERE `t1`.`another_column` = 123 
GROUP BY `t1`.`any_col` 
UNION ALL
SELECT 0
FROM INFORMATION_SCHEMA.TABLES
Where Not Exists( Select 1 From `table_1` )
LIMIT 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 8.0.20 डेटाबेस को AWS औरोरा में माइग्रेट करना

  2. MySQL:अगर इस आईपी में कोई रिकॉर्ड नहीं है तो डालें

  3. java.sql.SQLException:उपयोगकर्ता '[ईमेल संरक्षित]'@'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:हाँ)

  4. mysql fulltext का उपयोग करके एक पंक्ति में किसी शब्द की आवृत्ति कैसे प्राप्त करें?

  5. केस असंवेदनशील होने के लिए लिनक्स सर्वर में MySQL तालिका के नाम कैसे बदलें?