案例介绍
在介绍具体的 SQL 查询语句之前,我们首先来看一下这个案例背景和数据结构。这个案例涉及到两张表:trans 和 account。trans 表包含一些交易信息,其中一个字段是 from_address,表示这笔交易的发送方地址(由于是虚拟币交易所以该地址是由以逗号隔开多个地址组成)。而 account 表则包含一些账户信息,其中一个字段是 address,表示该账户的地址。此外,account 表还包含一个 name 字段,表示该账户的名称。
我们的目标是通过这两张表,找出每个 from_address 分别来自哪些账户。具体地说,我们需要对 trans 表进行联合查询,将其中的 from_address 字段与 account 表中的 address 字段进行匹配,然后将匹配到的所有 name 字段进行字符串拼接,并将结果分组展示。
sql查询语句
现在我们已经知道了这个案例需要进行的操作,接下来我们来看一下具体的 SQL 查询语句。在这个案例中,我们需要使用 JOIN 关键字对 trans 表和 account 表进行联合查询,代码如下:
SELECT
trans.from_address,
GROUP_CONCAT(account.name) AS account_names
FROM
trans
JOIN account ON FIND_IN_SET(account.address, trans.from_address)
GROUP BY
trans.from_address;
这个 SQL 查询语句中,JOIN 关键字将 trans 表和 account 表进行联合,FIND_IN_SET 函数用于查找 trans.from_address 中包含的所有 account.address,GROUP_CONCAT 函数用于将匹配到的所有 account.name 进行字符串拼接,GROUP BY 关键字用于对结果进行分组