0

mysql サブセレクトに問題があります。

**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')

2 つのファイルのうちの 1 つだけを取得します (ID 7 のファイル)。ここで何が欠けていますか?

4

1 に答える 1

1

連結されたデータを含む列 (「記事」列など) の場合、MySQL IN() 関数は使用できません。代わりに、string 関数を使用してそのFIND_IN_SET()ような値を照会してください。あなたの場合:

SELECT items.`ファイル名`,items.`name` FROM rm_shop アイテム
WHERE FIND_IN_SET(items.`id`,
(SELECT トークン.`記事` FROM rm_token トークン WHERE トークン.`トークン` = 'トークン')) > 0

動作中の sqlfiddle: http://sqlfiddle.com/#!2/796998/3/0

于 2013-06-09T10:06:28.887 に答える