sql >> Databasteknik >  >> RDS >> Oracle

SQL Väljer MIN-värde från raddata med null-värden

Det låter som att du vill ha något liknande

SELECT least( (case when col1 is null or col1 = 0 then 999999999 else col1 end),
              (case when col2 is null or col2 = 0 then 999999999 else col2 end),
              (case when col3 is null or col3 = 0 then 999999999 else col3 end) )
  FROM <<table name>>

där 999999999 är något numeriskt värde som är tillräckligt stort för att det alltid kommer att vara större än något annat giltigt värde. Om det är möjligt att alla tre kolumnerna kommer att ha NULL eller 0-värden, så skulle du förmodligen vilja lägga till en extra kontroll att om resultatet av den least funktionen är 999999999 att du returnerar 0 eller NULL eller vad som helst som är vettigt.

@X-Zero var vänlig nog att sätta ihop ett fungerande SQL Fiddle-exempel av denna konstruktion. Observera att hans exempel filtrerar bort raderna där alla tre kolumnerna har antingen NULL eller 0 värden.



  1. hur tar man data från csv-filen och sparar i graal med mysql?

  2. Påverkar ordningsföljden av tabeller i raka kopplingar, utan antydningsdirektiv, prestanda?

  3. Vad är skillnaden mellan PHPs addslashes och mysql(i)_escape_string?

  4. DateTime::CreateFromFormat för PHP 5.2.14