首页 > 社区问答列表 >Mysql select 中嵌套带子句

  Mysql select 中嵌套带子句

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

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

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


巴扎黑
巴扎黑

  • 面对疾风吧
  • 面对疾风吧   采纳为最佳   2016-11-07 14:56:49 1楼

    昨晚睡觉前还没想到,稀里糊涂的,早上醒来突然想起来之前用过一个FIND_IN_SET,问题顺利解决

    SELECT
    tt.*,u.name,(SELECT group_concat(title) FROM tag WHERE FIND_IN_SET(id,tt.tag)) as tagFROM content ttLEFT JOIN user u ON tt.owner=u.idORDER BY ts_created DESC

    改成这样就可以了。

    这个函数的功能是寻找一个字符串是否在另外一个以逗号分割的字符串中存在。


    +0 添加回复

  • 回复