2011-11-07 52 views
-1

我有一个问题重复行:SQL查询,选择不为空

所以我有一个表”下面的数据

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 

人们已加载数据到数据库中,它被显示出来像这样,因为各行字符限制......

所以,我怎么能告诉我不同​​的查询来获取每个one..I最只想此行返回:

234 Kevin Chicago IL  5555555555 550 

我不能做“所有行都不为空等”,因为最后一行总是可以为null,这取决于它。

非常感谢您的帮助!

+2

什么是您的查询现在? – jle

+0

查找一些教程,这是基本的方式寻求帮助。 – Shef

+0

你可以提供表格布局吗?您的示例不提供逻辑主键,代理键或任何有助于指示最近记录的内容。 (例如Row_Insert_Timestamp)是否有更多业务逻辑告诉您最近的记录是空值最少的记录? (例如给定ID最完整的记录。) –

回答

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

+0

谢谢,这工作!非常感激! – JohnnyRocket

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 

以上为您提供的每一列的每一个“最大” - 这可能导致被合并不同行的内容...