填充多行以查看是否填充了列?

时间:2014-08-07 16:00:26

标签: mysql sql aggregate-functions

我试图在MySql中找到一种方法,将同一用户的多条记录填充到一行中,以查看哪些列已填充。例如:

Username       Height       Weight       Age  
Bob123          6ft
Bob123                      100lbs   
Bob123                      120lbs       25yrs

我们说我在桌子上有这三个记录。我希望能够将它们组合成一行,只显示每列是否填充在任何记录中。我希望的结果记录对每个用户来说都是这样的:

Username       Height      Weight        Age  
Bob123         True        True          True  

有没有办法在MySQL中执行此操作,还是需要以编程方式查看此操作?

2 个答案:

答案 0 :(得分:1)

通用的sql方法如下:

select username
, case when maxheight is not null then 'true' else 'false' end hasheight
, etc
from 
(select username
, max(height) maxheight
, etc
from yourtables
where whatever
group by username) temp

答案 1 :(得分:0)

CREATE TABLE person (Username VARCHAR(55),       Height VARCHAR(55),       Weight VARCHAR(55) ,      Age VARCHAR(55)  
);
INSERT INTO person VALUES
('Bob123'   ,       '6ft'   ,       NULL       ,      NULL),
('Bob123'   ,       NULL      ,      '100lbs'   ,     NULL),
('Bob123'   ,       NULL      ,      '120lbs'   ,    '25yrs');


SELECT username,
    CASE height WHEN NULL THEN ' ' ELSE 'True'  END, 
    CASE weight WHEN NULL THEN ' ' ELSE 'True'  END,
    CASE age WHEN NULL THEN ' ' ELSE 'True'  END
FROM person
GROUP BY username;

DEMO