我有一张桌子:
id name position status
1 A 1,2 1
2 B 1 1
3 C 1
4 D 2 1
Where: position
列是一个文本字段;
我的要求在这里:
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
>'')。
问题出在哪里以及如何更改我的请求?
谢谢。
在检查字段列表中的数字时,您不需要检查位置是否为空。
你不需要检查position = FIND_IN_SET....
。它将返回 1 所在位置的值。
你需要这样做:
SELECT `id`
FROM `table`
WHERE `status`=1
AND FIND_IN_SET( 1, `position` )
OR FIND_IN_SET( 2, `position` )
演示在这里 http://sqlfiddle.com/#!2/84eaf/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)