SQL:如何使用逗号值连接另一个表? [复制]

Posted

技术标签:

【中文标题】SQL:如何使用逗号值连接另一个表? [复制]【英文标题】:SQL: How to use comma values to join another table? [duplicate] 【发布时间】:2016-02-22 11:12:39 【问题描述】:

A:

id  username  like_books 
-----------------------
1   Peter     1,2,3
2   John      1,2

B

id  book_name  
-----------------------
1   Legend
2   ***
3   Google

现在, 是否有任何sql语句可以显示如下输出:

输出:

id username    like_books
------------------------------------
1  Peter       Legend,***,Google
2  John        Legend,***

谢谢。

【问题讨论】:

@RahulTripathi mysql TableA:like_books 列类型是什么? 您通常不会在数据库字段中使用逗号分隔的列表来连接到另一个数据库字段。每个字段的许多值打破了first normal form。合理的数据库设计通常会替换它with an additional table。 @NguyễnHảiTriều VARCHAR(30) @sirsince1990 哦...我的问题是重复的... 【参考方案1】:

试试这个:

SELECT  a.id,a.username,
        GROUP_CONCAT(b.book_name ORDER BY b.id) like_books
FROM    A a
INNER JOIN B b ON FIND_IN_SET(b.id, a.like_books) > 0
GROUP   BY a.id

FIDDLE DEMO

【讨论】:

SQL 中的查询是什么? 谢谢,这是工作。但是有没有更好的方法来设计数据库和模式?正如@9000 所说。 @Metaphor:- 这只是 SQL,适用于 MySQL 数据库。 @RahulTripathi 但是,我在 SQL 2012 中有错误。 没有什么比得上 SQL 2012。您可能正在 SQL Server 中尝试...对吗?

以上是关于SQL:如何使用逗号值连接另一个表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将逗号分隔的列值与另一个表作为行连接

MySQL - 如何选择表中的行,其中 id 值位于另一个表中的逗号分隔字段中?

如何使用 SQL 查询连接两个表? [复制]

oracle语句中如何把一列的值合并为一个值,用逗号隔开?

如何 SQL 为另一个表中的每个 id 插入一条记录? [复制]

sql如何将一个表与另外一张表相关联