mysql关于IN只能取出一条记录的问题

qq2460857094 2014-03-11 02:53:55
现在有个表是dede_member,有个字段是aid,字段是varchart值是:175,23,358,239,849,98,这些值主要是记录会员浏览过的文章,对应的数字分别是文章的ID,另外一个表是dede_archives,我现在想查询会员最后浏览的三篇文章,即文章ID是175,23,358这三个文章ID在dede_archives对应的的记录。SQL语句如下:
SELECT arc.id,arc.title FROM `dede_archives` arc
LEFT JOIN `dede_member` mem ON arc.id IN(SUBSTRING_INDEX(mem.aid,',',3))
WHERE mem.mid=1
但查询得到的记录只能查到一条记录,ID是175的。
原因可能是SUBSTRING_INDEX(mem.aid,',',3)得出来的值被当作字符串来处理了。对于这种情况应该如何解决或者如何改写SQL语句可以查询到175,23,358这三条记录。
...全文
657 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq2460857094 2014-03-11
  • 打赏
  • 举报
回复
结帖,感谢两位版本。我想到FIND_IN_SET了,没想到这样用,自己对mysql不懂,有点。。。
wwwwb 2014-03-11
  • 打赏
  • 举报
回复
FIND_IN_SET(arc.id,SUBSTRING_INDEX(mem.aid,',',3))
ACMAIN_CHM 2014-03-11
  • 打赏
  • 举报
回复
SELECT arc.id,arc.title FROM `dede_archives` arc LEFT JOIN `dede_member` mem ON find_in_set(arc.id ,SUBSTRING_INDEX(mem.aid,',',3)) WHERE mem.mid=1
qq2460857094 2014-03-11
  • 打赏
  • 举报
回复
经过测试,下面的SQL是可以得到3条记录的。 SELECT arc.id,arc.title FROM `dede_archives` arc LEFT JOIN `dede_member` mem ON arc.id IN(175,23,358) WHERE mem.mid=1 但这下面的语句175,23,358加上引号只能得到一条记录,跟上面的使用SUBSTRING_INDEX(mem.aid,',',3)得到的结果一致 SELECT arc.id,arc.title FROM `dede_archives` arc LEFT JOIN `dede_member` mem ON arc.id IN('175,23,358') WHERE mem.mid=1

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧