2017-05-18 1 views
0

Ich habe eine Tabelle mit 7 Feldern und ich möchte Datensätze auszuwählen Nullwerte, die in allen drei SpaltenMysql: n Anzahl der Spalten null

+3

Willkommen bei Stack Overflow! Bitte bearbeiten Sie Ihre Frage, um [den Code, den Sie bisher haben] (http://whathaveyoutried.com) anzuzeigen. Sie sollten mindestens einen Umriss (aber vorzugsweise einen [mcve]) des Codes angeben, mit dem Sie Probleme haben, dann können wir versuchen, bei dem spezifischen Problem zu helfen. Sie sollten auch [fragen] lesen. –

+0

Obwohl beide Antworten Mängel aufweisen, wissen Sie von ihnen, wie Sie das gewünschte Ergebnis erzielen. Abgesehen davon: Die Aufgabe ist seltsam. Ist das eine Übung aus einer Klasse? Es ist schwer vorstellbar, eine Tabelle in einer richtig gestalteten Datenbank, wo die Information, dass drei Felder in einem Datensatz null sind, hilfreich wäre. –

+0

Was passiert, wenn einige 5 Nullwerte haben, wollen Sie sie oder nur genau 3? – xQbert

Antwort

1
select * 
from tableName 
having sum((case when column1 is null than 1 end)+ 
(case when column2 is null than 1 end)+ 
(case when column3 is null than 1 end)+ 
(case when column4 is null than 1 end)+ 
(case when column5 is null than 1 end)+ 
(case when column6 is null than 1 end)+ 
(case when column7 is null than 1 end)) >= 3 
+0

Er versucht, MYSQL Server zu verwenden. –

+0

Warum 'SUMME'? Warum 'HAVING'? Und sogar Mischen von '*' mit 'sum'. Sieht sehr falsch zu mir aus. –

+0

@ThorstenKettner ja * ist nicht nötig danke –

0

Create Table Script

Create Table SevenColumnTable 
(
Col1 varchar(10), 
Col2 varchar(10), 
Col3 varchar(10), 
Col4 varchar(10), 
Col5 varchar(10), 
Col6 varchar(10), 
Col7 varchar(10) 
); 

Probeneinsätze

Insert into SevenColumnTable(Col1,Col2,Col3,Col4) 
Select 'A','B','C','D'; 

Insert into SevenColumnTable(Col5,Col2,Col3,Col4) 
Select 'A','B','C','D'; 


Insert into SevenColumnTable(Col2,Col3,Col4) 
Select 'A','B','C'; 


Insert into SevenColumnTable(Col5,Col2,Col3) 
Select 'A','B','C'; 

Select Statement

SELECT * FROM SevenColumnTable where 
ifnull(Col1,1)+ifnull(Col2,1)+ifnull(Col3,1)+ifnull(Col4,1)+ifnull(Col5,1)+ifnull(Col6,1) 
+ifnull(Col6,1)=3; 
+0

@Wish Ich habe geteilt –

+0

Wissen Sie, was "IFNULL" tut? Es scheint nicht so. Die Abfrage wird nicht wie erwartet funktionieren. Siehe hier : https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_ifnull –

+0

Sorry, ich könnte kein Experte für MySQL sein, es gibt mir das Ergebnis [http: // prntscr. com/f99s30] –

2

Nun, wie die anderen, die so schwer, die Abfrage zu schreiben. Hier geht es:

select * 
from mytable 
where (col1 is null) + (col2 is null) + (col3 is null) + 
     (col4 is null) + (col5 is null) + (col6 is null) + (col7 is null) = 3; 

Dies macht die Verwendung von true = 1 und false = 0 in MySQL. Jedenfalls zähle ich Nullen einfach.

+0

Awesome. Auf den Punkt. –