在Mysql中,是否可以获得按列名分组的行列表?
在我的数据库中,有一个名为“results”的表,它有四列(name、device、passed、failed)。假设下表中有4行在Mysql中,是否可以获得按列名分组的行列表?,mysql,sql,pydal,Mysql,Sql,Pydal,在我的数据库中,有一个名为“results”的表,它有四列(name、device、passed、failed)。假设下表中有4行 name device passed failed test1 device_1 2 1 test1 device_2 3 0 test2 device_1 1 2 test2 device_2 2 1 我想要以下结果: [(test1,device_1,2,1),(test1,de
name device passed failed
test1 device_1 2 1
test1 device_2 3 0
test2 device_1 1 2
test2 device_2 2 1
我想要以下结果:
[(test1,device_1,2,1),(test1,device_2,3,0)]
[(test2,device_1,1,2),(test1,device_2,2,1)]
只需对DB进行一次查询就可以得到该结果吗
目前我正在查询数据库两次,首先获取一个不同名称的列表,然后获取具有该名称的行。下面是伪代码
test_names = SELECT DISTINCT name FROM results
for test_name in test_names:
rows = SELECT * FROM results WHERE name=test_name
然后,我正在处理行以获得我想要的对象结构。您需要像
CONCAT_WS()
和CONCAT
这样的连接函数来连接每一行的列,然后使用GROUP_CONCAT()
对每一名称进行聚合:
SELECT GROUP_CONCAT('(',name,',',device,',',passed,',',failed,')') FROM results group by name;
SELECT CONCAT('[', GROUP_CONCAT(CONCAT('(', CONCAT_WS(',', name, device, passed, failed), ')')), ']') AS result
FROM results
GROUP BY name
请参阅。我通常会在表示层中处理这种事情。我不懂Python,所以我不能再多说了