Sql Query, выберите отдельные строки, где не ноль - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть вопрос:

Итак, у меня есть следующие данные в таблице: "

id        name     city     state      phone         price

234    Kevin    Chicago   IL        5555555555    550

234    Kevin    Chicago   IL        5555555555    NULL

234    Kevin    Chicago   IL        55555    NULL

234    Kevin    Chicago   IL        NULL    NULL

Люди загрузили данные в базу данных, и она появляется так из-за символаограничения для каждой строки ...

Итак, как мне сказать, чтобы мой отдельный запрос получал максимум от каждого из них ... Я просто хочу, чтобы эта строка возвращалась:

234    Kevin    Chicago   IL        5555555555    550

И я не могу сделать«где все строки не равны нулю и т. д.», поскольку последняя строка всегда может быть также нулевой, это зависит от ситуации.

Большое спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

В зависимости от того, что именно означает «наиболее» и в зависимости от типов данных phone и price, это может быть ваш запрос:

Редактировать: обобщить запрос, получить phone & price на человека.

SELECT id, name, city, state, max(phone) AS phone, max(price) AS price
FROM   tbl
GROUP  BY id, name, city, state;

phone и price могут поступать таким образом из разных рядов.

Руководство по агрегатным функциям :

Если не указано иное, групповые функции игнорируют значения NULL.

Итак, IFNULL или COALESCE здесь не требуются.

0 голосов
/ 07 ноября 2011

попробуйте это

SELECT 
ID, 
MAX (IFNULL (NAME, ' ')) AS NAME, 
MAX (IFNULL (CITY, ' ')) AS CITY, 
MAX (IFNULL (STATE, ' ')) AS STATE, 
MAX (IFNULL (PHONE, ' ')) AS PHONE, 
MAX (IFNULL (PRICE, ' ')) AS PRICE
FROM MyTable 
GROUP BY ID

Приведенное выше дает вам для каждого "max" каждого столбца - это может привести к объединению контента из разных строк ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...