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

एक पंक्ति में NULLs की संख्या गिनें

मुझे यकीन नहीं है कि क्या अधिक साफ-सुथरी विधियां हैं, लेकिन यह काम करना चाहिए:

SELECT Field1, Field2, ISNULL(Field1) + ISNULL(Field2) Num_Null
FROM   YourTable;

टेस्ट केस:

CREATE TABLE YourTable (Field1 varchar(10), Field2 varchar(10));

INSERT INTO YourTable VALUES (NULL, 'A');
INSERT INTO YourTable VALUES ('B', 'C');
INSERT INTO YourTable VALUES ('B', NULL);
INSERT INTO YourTable VALUES (NULL, NULL);

परिणाम:

+--------+--------+----------+
| Field1 | Field2 | Num_Null |
+--------+--------+----------+
| NULL   | A      |        1 |
| B      | C      |        0 |
| B      | NULL   |        1 |
| NULL   | NULL   |        2 |
+--------+--------+----------+
4 rows in set (0.00 sec)

अद्यतन करें: अद्यतन प्रश्न के आगे:

अगर आपकी टेबल में ऐसे कॉलम हैं जो affiliate_1 . की तरह दिखते हैं , affiliate_2 , आदि, यह शायद ही कभी एक अच्छा विचार है क्योंकि आप मेटाडेटा के साथ डेटा मिला रहे होंगे। सामान्य तौर पर, उपयोगकर्ता-से-संबद्ध संबंधों के लिए एक अन्य निर्भर तालिका का उपयोग करने के लिए एक अनुशंसित सुधार है, जैसा कि निम्न उदाहरण में है:

CREATE TABLE users (
   user_id int, 
   user_name varchar(100),
   PRIMARY KEY (user_id)
) ENGINE=INNODB;

CREATE TABLE users_affiliates (
   user_id int, 
   affiliate_name varchar(100),
   PRIMARY KEY (user_id, affiliate_name),
   FOREIGN KEY (user_id) REFERENCES users (user_id)
) ENGINE=INNODB;

फिर users . को छांटना सहयोगियों की संख्या के आधार पर तालिका कुछ इस तरह दिखेगी:

SELECT    u.*, d_tb.num_aff
FROM      users
JOIN      (
             SELECT   user_id, COUNT(*) num_aff
             FROM     users_affiliates
             GROUP BY user_id
          ) d_tb ON (d_tb.user_id = u.user_id)
ORDER BY  d_tb.num_aff DESC;

फायदे बहुत हैं, लेकिन सबसे महत्वपूर्ण बात यह है कि यह उपरोक्त प्रश्नों को लिखना आसान बनाता है, और किसी भी सहयोगी के साथ काम करने के लिए पर्याप्त लचीला है (आपके द्वारा आवंटित कॉलम की संख्या तक सीमित नहीं है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. थ्रेड मुख्य java.lang.IncompatibleClassChangeError में अपवाद:इंटरफ़ेस org.apache.hadoop.mapreduce.JobContext मिला, लेकिन कक्षा अपेक्षित थी?

  2. 3 टेबल से MySQL डेटा निष्कर्षण - जुड़ता है और अधिकतम

  3. MySQL कॉलम से माइम प्रकार निर्धारित करें

  4. उबंटू 12.04 पर mysql और mysqlnd दोनों स्थापित करें

  5. MySQL - यह जांचने का सबसे तेज़ तरीका है कि क्या InnoDB तालिका में डेटा बदल गया है