我遇到mysql subselect的问题。
**token table:**
id | token | articles
1 | 12345 | 7,6
2 | 45saf | 6,7,8
**items table:**
id | name | filename
6 | Some brilliant name | /test/something_useful.mp3
7 | homer simpson | /test/good-voice.mp3
**query:**
SELECT items.`filename`,items.`name` FROM rm_shop items WHERE items.`id` IN ( SELECT token.`articles` FROM rm_token token WHERE token.`token` = 'token')
我只得到两个文件中的一个(id为7)。我在这里缺少什么?
答案 0 :(得分:1)
对于具有连锁数据的列(如“文章”列),您不能使用MySQL IN()函数。而是使用字符串函数FIND_IN_SET()
来查询这些值。在你的情况下:
SELECT items.`filename`,items.`name` FROM rm_shop items WHERE FIND_IN_SET(items.`id`, (SELECT token.`articles` FROM rm_token token WHERE token.`token` = 'token')) > 0