Python 将联接查询的结果聚合到列表中
让我缩短我的需求,并通过一个例子来理解它 假设我有两张桌子 表1=书籍 Id:名称:Lcode 1:book1:101 2:book2:102 3:book1:102 表2=语言 Lcode:lname 101:嗯 102:fr 现在我在mysql中使用这些数据,使用flask返回json 我有很多这样的表,其中我需要对10个这样的表的某些列应用一些过滤条件 在输出中,我希望每一行都是这样的,如果它有多个值,那么它应该以列表的形式出现 如果我想知道书的名字和语言 第一册:[英、法] Boook2:嗯 目前,我正在使用一个基本的select查询,在列lcode上使用内部联接 我从中得到的输出是 第一册:英语 第一册:fr 第二册:英语 如果我使用Python 将联接查询的结果聚合到列表中,python,mysql,Python,Mysql,让我缩短我的需求,并通过一个例子来理解它 假设我有两张桌子 表1=书籍 Id:名称:Lcode 1:book1:101 2:book2:102 3:book1:102 表2=语言 Lcode:lname 101:嗯 102:fr 现在我在mysql中使用这些数据,使用flask返回json 我有很多这样的表,其中我需要对10个这样的表的某些列应用一些过滤条件 在输出中,我希望每一行都是这样的,如果它有多个值,那么它应该以列表的形式出现 如果我想知道书的名字和语言 第一册:[英、法] Boook2
Select b.name,l.lname from books b inner join language l on l.lcode=b.lcode group by b.name
Select b.name,l.lname from books b inner join language l on l.lcode=b.lcode group by b.name,l.lname
这将是一个错误的sql语句
如果我使用
Select b.name,l.lname from books b inner join language l on l.lcode=b.lcode group by b.name
Select b.name,l.lname from books b inner join language l on l.lcode=b.lcode group by b.name,l.lname
这不会给我正确的结果
GROUP\u CONCAT
可能就是你想要的
设置
create table book(
id串行主键,
名称文本,
语言id int
);
创建表语言(
id串行主键,
名称文本
);
在账簿中插入(名称、语言id)值('book1',1),('book2',2),('book1',2);
插入语言(名称)值('en')、('fr');
质疑
选择
b、 名字,
组_CONCAT(l.name)作为语言
从…起
b册
b.language_id=l.id上的内部连接语言l
按b.name分组
结果
name languages
book1 en,fr
book2 fr
在加入的查询上使用
groupby
“分组依据”的问题是,我需要在“分组依据”中包含所有列,这些列在SELECT中。我总共有10个表,当所有列合并在一起时,我需要从中选择8-9列。b.book\u id,l、 来自books\u book\u languages b内部连接books\u language l on b.language\u id=l.id group by b.book\u id我显然无法使用此查询,使用此选项选择b.book\u id,l.code from books\u book\u languages b内部连接books\u language l on b.language\u id=l.id group by b.book\u id,l、 代码不会给出期望的结果你肯定解决了我的问题,我从来不知道这样的函数存在