2017-05-10 3 views
1

Ich habe eine Tabellezeigen nur Werte von mehr als 100 mysql

farmid chickens cows horses 
10  104  50 2 
12  62  110 7 
17  74  12 154 

ich den Tisch und nur Anzeigewerte abfragen möchten, die größer als 100 Ausgabe wie folgt aussehen sollte

farmid chickens cows horses 
10  104  
12    110 
17     154 

Does Hat jemand Vorschläge, wie ich das machen kann?

Ich habe dies versucht:

SELECT farmid, chickens, cows, horses 
FROM farms 
WHERE chickens >=100 OR cows>=100 OR horses>=100; 

aber es gibt

farmid chickens cows horses 
10  104  50 2 
12  62  110 7 
17  74  12 154 
+0

Bitte formatieren Sie die Tabelle besser, damit sie leicht zu verstehen ist. –

+0

@StutiRastogi Danke! –

+3

Wenn du etwas versucht hast, poste es hier, damit andere es sich anschauen können –

Antwort

1

Dadurch werden alle Tabellenzeilen zurückgeben, wenn Sie nur die Zeilen wollen, wenn mindestens eine der chickens, cows oder horses sind> = 100, umfassen die letzte Zeile wie Gut.

SELECT 
    farmid, 
    CASE 
     WHEN chickens >= 100 THEN chickens 
     ELSE NULL 
    END AS chickens, 
    CASE 
     WHEN cows >= 100 THEN cows 
     ELSE NULL 
    END AS cows, 
    CASE 
     WHEN horses >= 100 THEN horses 
     ELSE NULL 
    END AS horses 
FROM 
    <enter table name here> 
WHERE chickens >= 100 OR cows >= 100 OR horses >= 100 
1

Sie müssen die WHERE-Klausel für diese.

Syntax:

SELECT column1, column2, ... 
FROM table_name 
WHERE condition; 

können Sie OR verwenden und das Symbol> in Ihrer WHERE-Klausel das gewünschte Ergebnis zu erhalten.

SELECT farmid, 
    CASE WHEN chickens > 100 THEN chickens ELSE NULL 
    END as chickens, 
    CASE WHEN cows > 100 THEN cows ELSE NULL 
    END as cows, 
    CASE WHEN horses > 100 THEN horses ELSE NULL 
    END as horses, 
from tableName 
WHERE chickens > 100 OR cows > 100 OR horses > 100 

Dadurch wird farmid ausgewählt, und je nachdem, welcher Wert> 100 ist, wird dieser Spaltenwert ausgewählt. Es sollte funktionieren, auch wenn mehr als eine Spalte einen Wert> 100 hat.

+0

Ich habe eine WHERE-Klausel mit Hühnern> = 100 OR Kühe> = 100 OR Pferde> = 100 versucht und bekomme alle Ergebnisse. Was soll ich anders machen? –

+0

Da wir SELECT * verwendet haben, können Sie SELECT farmid verwenden, wenn Sie das möchten. –

+0

Ich möchte die Farm-ID und den Wert anzeigen, der größer als 100 ist. –

4

Wenn Sie die Hühner, Kühe, Pferde Zellen mit Werten unter 100 als null oder leer haben möchten, sollten Sie Fall ... wann verwenden.

Zum Beispiel ...

select 
    (case when chickens > 100 then chickens else null end case) as chickens, 
    (case when cows > 100 then cows else null end case) as cows, 
    (case when horses > 100 then horses else null end case) as horses 
from table_name 
where 
    chickens > 100 OR cows > 100 OR horses > 100 
+0

Wäre '' '' besser als 'null'? Nicht sicher, was in MySQL idiomatisch ist –

+1

Ich glaube nicht, dass Sie 'ELSE NULL' brauchen. @ AluanHaddad Das würde dann technisch eine Besetzung irgendwo erfordern, und das ist hässlich. –

+0

@TimBiegeleisen danke für die Erklärung –

Verwandte Themen