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