Sql Query,选择不为null的不同行

时间:2011-11-07 19:32:09

标签: mysql sql database

我有一个问题:

所以我在表格中有以下数据“

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 个答案:

答案 0 :(得分:1)

根据“最多”的含义,取决于phoneprice的数据类型,这可能是您的查询:

修改:概括查询,获取phone&每个人price

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

phoneprice可以通过这种方式来自不同的行。

aggregate functions上的手册:

  

除非另有说明,否则组函数会忽略NULL值。

因此,此处不需要IFNULLCOALESCE

答案 1 :(得分:0)

试试这个

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

上面给出了每列的“最大值” - 这可能导致来自不同行的内容被合并......