我想在数据库中的一个结构中找到一个值,但我的代码无法正常工作
// $dir_id = 2;
// dirs (in database) = 1,2,3
SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(`dirs`)) ORDER BY `id` DESC
但是此代码无法找到2,它只是在dirs
我怎么解决这个问题?
答案 0 :(得分:2)
在IN
中,您将通过要匹配的ID列表,例如
AND dirs IN (1,2,3,4,5)
用你的例子:
SELECT * FROM `items`
WHERE id='$id'
AND dirs IN ('$dir_id')
ORDER BY `id` DESC
答案 1 :(得分:0)
我过去做过这个:
SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(Select 'column_name' from `dirs`)) ORDER BY `id` DESC
答案 2 :(得分:0)
如果您在"1,2,3"
列中存储了字符dirs
。 (通过你应该规范你的数据库设计。)
然后您无法使用IN
,而是需要使用 FIND_IN_SET 。
SELECT * FROM `items`
WHERE (id='$id' AND FIND_IN_SET('$dir_id', `dirs`))
ORDER BY `id` DESC