sql函数--06---Mysql----group_concat函数

函数语法:

group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。比较抽象;

group_concat( [DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’] )

通俗点理解,group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。

案例1.

select id,price from goods;  

在这里插入图片描述
以id分组,把price字段的值在同一行打印出来,逗号分隔(默认)

select id, group_concat(price) from goods group by id;  

在这里插入图片描述
以id分组,把price字段的值在一行打印出来,分号分隔

select id,group_concat(price separator ';') from goods group by id;  

在这里插入图片描述
以id分组,把去除重复冗余的price字段的值打印在一行,逗号分隔

select id,group_concat(distinct price) from goods group by id;  

在这里插入图片描述
以id分组,把price字段的值去重打印在一行,逗号分隔,按照price倒序排列

select id,group_concat(DISTINCT price order by price desc) from goods group by id;  

在这里插入图片描述

案例 2

表格 Person

在这里插入图片描述

表格 Country

在这里插入图片描述

题目 ?

在这里插入图片描述

SELECT Country,
GROUP_CONCAT(IF (Country='China',CONCAT_WS(' ', LastName ,FirstName),CONCAT_WS(' ', FirstName, LastName))
 ORDER BY ID ASC   
 SEPARATOR ' | ') AS NAME
FROM ( SELECT * FROM
Country c, Person p WHERE p.ID IN
 (c.Name1, c.Name2, c.Name3, c.Name4, c.Name5)) t 
GROUP BY Country DESC

IF 表达式

IF( expr1 , expr2 , expr3 )

expr1 的值为 TRUE,则返回值为 expr2
expr1 的值为FALSE,则返回值为 expr3

IF NULL 表达式

IFNULL( expr1 , expr2 )

判断第一个参数expr1是否为NULL:

如果expr1不为空,直接返回expr1;

如果expr1为空,返回第二个参数 expr2

CONCAT_WS 函数

CONCAT_WS(separator,str1,str2,...)

CONCAT_WS()表示并置利用分离器,是CONCAT()的一种特殊形式。第一个参数是其余参数的分隔符。分隔符在连接的字符串之间加入。分隔符可以是一个字符串,用来分隔其余参数。如果分隔符是NULL,则结果为NULL。

在这里插入图片描述

SQLAlchemy 中,可以使用 `func.group_concat()` 函数来实现类似于 MySQL 中的 `GROUP_CONCAT` 函数的功能。`func.group_concat()` 函数可以将一个列的所有值拼接成一个字符串,并且可以指定分隔符。 下面是一个简单的例子,假设有一个 `Book` 表格,其中包含了 `id` 和 `title` 两个列,我们想要将所有的书名拼接成一个字符串并以 `,` 分隔: ```python from sqlalchemy import create_engine, Column, Integer, String, func from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('mysql+pymysql://user:password@host:port/database', echo=True) Session = sessionmaker(bind=engine) session = Session() Base = declarative_base() class Book(Base): __tablename__ = 'books' id = Column(Integer, primary_key=True) title = Column(String(255)) result = session.query(func.group_concat(Book.title, separator=',')).scalar() print(result) ``` 在上面的代码中,我们使用 `func.group_concat()` 函数将 `Book` 表格中的所有书名拼接成一个字符串,并以 `,` 分隔。`func.group_concat()` 函数的第一个参数是要拼接的列,第二个参数是分隔符(可选,默认为 `,`)。`session.query(func.group_concat(Book.title, separator=','))` 会生成一个 SQL 查询语句类似于 `SELECT GROUP_CONCAT(title SEPARATOR ',') FROM books`,使用 `scalar()` 方法可以获取查询结果。 希望这个例子能够帮助你理解如何在 SQLAlchemy 中使用 `func.group_concat()` 函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值