Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mysql中,是否可以获得按列名分组的行列表?_Mysql_Sql_Pydal - Fatal编程技术网

在Mysql中,是否可以获得按列名分组的行列表?

在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

在我的数据库中,有一个名为“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,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,所以我不能再多说了