请教一个sql查询问题.
laravel 项目中使用
select * from article where(article_id,$article)->get();
根据此 sql 语句 查询出7条数据
查询出approve 字段值为 |1||3||7| 这种形式 这个值里面的 1 3 7 是和User表的 user_id对应
需求是想把approve这个字段 1 3 7 这三个值变为对应的 user_name 张三李四王五
请问可以通过一条sql语句,可以查询出来满足需求的数据么?
如果不能有什么解决方案?
拜谢了

解决方案 »

  1.   


    这个图片是article 表 user表不方便贴出来,但我相信这个应该是能让大佬们看懂的
      

  2.   

    假设你的user表字段为user_id,user_name,试试以下代码select aa.*,  concat("|",ifnull(bb.user_name,"NA"),"||",ifnull(cc.user_name,"NA"),"||",ifnull(dd.user_name,"NA"),"|") approval_nm
    from article aa
    left join user bb on SUBSTRING_INDEX(SUBSTRING_INDEX(aa.approval,"||",1),"|",-1)=bb.user_id
    left join user cc on SUBSTRING_INDEX(SUBSTRING_INDEX(aa.approval,"||",2),"|",-1)=cc.user_id
    left join user dd on SUBSTRING_INDEX(SUBSTRING_INDEX(aa.approval,"||",-1),"|",1)=dd.user_id