У меня есть таблица My_Values, в которой могут отсутствовать некоторые записи; под "отсутствующим" я подразумеваю содержание записи = ''.

Я хочу получить минимальное значение количества строк с одинаковым именем, но проблема в том, что если я использую это:

SELECT MIN(my_value) FROM My_Values WHERE name LIKE 'John'

Он возвращает ''. (пустая строка? термин?)

Я знаю, что MIN () должен игнорировать NULL, но, похоже, не игнорирует ''. Как лучше всего написать запрос, чтобы он также игнорировал ''?

0
Chelonian 25 Июл 2012 в 23:59
1
Как насчет SELECT MIN (my_value) FROM My_Values ​​WHERE name LIKE 'John' AND my_value! = ''?
 – 
Michael
26 Июл 2012 в 00:06
Какой тип "my_value"?
 – 
Dmitry B.
26 Июл 2012 в 00:06
Вот и все. Я действительно пробовал что-то подобное, но, должно быть, сделал ошибку и подумал, что есть что-то более сложное, что я упустил. Может, вы просто переместите свой комментарий к ответу, и я его приму?
 – 
Chelonian
26 Июл 2012 в 00:22
My_value - это строковое представление продолжительности времени (например, "0: 00: 02: 173000")
 – 
Chelonian
26 Июл 2012 в 00:24
Ваше число часов дополнено нулями? В противном случае у вас могут быть проблемы с сортировкой, и поэтому min () не всегда может возвращать правильное значение. Учтите, что «9: 00: 02: 173000» больше, чем «10: 00: 02: 173000».
 – 
Dmitry B.
26 Июл 2012 в 01:11

1 ответ

Лучший ответ

Добавьте дополнительное условие в предложение WHERE:

SELECT MIN(my_value) FROM My_Values WHERE name LIKE 'John' AND my_value != ''
3
Michael 26 Июл 2012 в 00:24