Mysql select 中嵌套带子句

2016-11-07 00:07:44 +08:00
 liujin834

很常见的用例: 我有一张存放文章的表, tag 字段是逗号分隔的数字,在显示列表的时候我想一次性查询出 tag 的字符串

SELECT
	tt.*,u.name,(SELECT group_concat(title) FROM tag WHERE id IN (tt.tag)) as tag
FROM content tt
LEFT JOIN user u ON tt.owner=u.id
ORDER BY ts_created DESC

这句话查出来 tag 每次都是只有一个,原因主要是 IN 语句中放了一个字符串,而不是数字,本来应该是IN(97,92),但这样执行实际上代表了IN('97,92'),请高手帮忙解答一下怎样才能让它变成一串数字用逗号分隔,我知道这样不符合范式什么鬼的,但我这个东西涉及的数据量很小。

5856 次点击
所在节点    MySQL
3 条回复
b821025551b
2016-11-07 00:12:23 +08:00
写个分割函数。
SoloCompany
2016-11-07 01:11:06 +08:00
不在乎性能就是 concat(‘,’,id,’,’) like concat(‘%,’,tt.tag,’,%’)
liujin834
2016-11-07 10:21:20 +08:00
@SoloCompany FIND_IN_SET 就解决了哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318573

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX