我试图在MySql中找到一种方法,将同一用户的多条记录填充到一行中,以查看哪些列已填充。例如:
Username Height Weight Age
Bob123 6ft
Bob123 100lbs
Bob123 120lbs 25yrs
我们说我在桌子上有这三个记录。我希望能够将它们组合成一行,只显示每列是否填充在任何记录中。我希望的结果记录对每个用户来说都是这样的:
Username Height Weight Age
Bob123 True True True
有没有办法在MySQL中执行此操作,还是需要以编程方式查看此操作?
答案 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;