0

私はテーブルを持っています:

id  name   position   status
1   A      1,2        1
2   B      1          1
3   C                 1
4   D      2          1

説明: positioncolumn はテキスト フィールドです。私のリクエストはここにあります:

SELECT `id` 
FROM  `table` 
WHERE `status`=1
AND `position` >  ''
AND `position` = FIND_IN_SET( 1,  `position` ) 
OR  `position` = FIND_IN_SET( 2,  `position` ) 

このリクエストは 1,2,3,4 を返します。私が必要とするので、これは間違っています: 1,2,4 -> 条件: ( position> ''). どこに問題があり、リクエストを変更するにはどうすればよいですか? ありがとう。

4

1 に答える 1

2

フィールドリストの数字をチェックしているときに、位置が空かどうかをチェックする必要はありません。

チェックする必要はありませんposition = FIND_IN_SET....。1が位置にある値を返します。

あなたはそのようにする必要があります:

 SELECT `id` 
 FROM  `table` 
 WHERE `status`=1
 AND  FIND_IN_SET( 1,  `position` ) 
 OR   FIND_IN_SET( 2,  `position` ) 

デモはこちら

于 2014-03-18T13:19:07.070 に答える