sql >> Database teknologi >  >> RDS >> Mysql

Tæl antallet af NULL'er i træk

Jeg er ikke sikker på, om der er pænere metoder, men dette burde virke:

VÆLG Felt1, Felt2, ISNULL(Felt1) + ISNULL(Felt2) Num_NullFROM DinTabel; 

Testtilfælde:

CREATE TABLE YourTable (Felt1 varchar(10), Field2 varchar(10));INSERT INTO YourTable VALUES (NULL, 'A');INSERT INTO YourTable VALUES ('B', 'C');INSERT INTO YourTable VALUES (NULL, 'A'); INTO YourTable VALUES ('B', NULL);INSERT INTO YourTable VALUES (NULL, NULL); 

Resultat:

+--------+--------+----------+| Felt1 | Felt2 | Num_Null |+--------+--------+----------+| NULL | A | 1 || B | C | 0 || B | NULL | 1 || NULL | NULL | 2 |+--------+--------+----------+4 rækker i sæt (0,00 sek.)

OPDATERING: Yderligere til det opdaterede spørgsmål:

Hvis du har kolonner i din tabel, der ligner affiliate_1 , affiliate_2 osv., er dette sjældent en god idé, da du ville blande data med metadataene. Generelt er en anbefalet rettelse at bruge en anden afhængig tabel til bruger-til-affilierede relationer, som i følgende eksempel:

CREATE TABLE-brugere ( 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 (bruger_id, affiliate) FOREIGN KEY (user_id) REFERENCES brugere (user_id)) ENGINE=INNODB; 

Sorter derefter brugerne tabel efter antallet af tilknyttede selskaber vil se nogenlunde sådan ud:

SELECT u.*, d_tb.num_affFROM usersJOIN ( 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; 

Fordelene er mange, men vigtigst af alt gør det forespørgsler som ovenstående lette at skrive og fleksible nok til at arbejde med et hvilket som helst antal tilknyttede selskaber (og ikke begrænset af antallet af kolonner, du har tildelt).



  1. Oracle SQL - Vælg brugere mellem to dato for måned

  2. Gem kun de sidste 5 søgeresultater for brugeren i en tabel

  3. Hvordan forespørger jeg på længden af ​​et Django ArrayField?

  4. MySQL-forespørgsel åruge i den aktuelle uge for at starte på en torsdag, slutte på onsdag