我有一个问题:
所以我在表格中有以下数据“
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
我不能做“所有行都不为空等”,因为最后一行总是也可以为空。
非常感谢你的帮助!
答案 0 :(得分:1)
根据“最多”的含义,取决于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
可以通过这种方式来自不同的行。
aggregate functions上的手册:
除非另有说明,否则组函数会忽略NULL值。
因此,此处不需要IFNULL
或COALESCE
。
答案 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
上面给出了每列的“最大值” - 这可能导致来自不同行的内容被合并......