MySQL Subselect问题

时间:2013-06-09 08:59:42

标签: mysql subquery

我遇到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)。我在这里缺少什么?

1 个答案:

答案 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

工作方式:http://sqlfiddle.com/#!2/796998/3/0