我想在数据库的结构之一中找到一个值,但我的代码无法正常工作
// $dir_id = 2;
// dirs (in database) = 1,2,3
SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(`dirs`)) ORDER BY `id` DESC
但是这段代码找不到 2 它只是在里面找到 1dirs
我该如何解决这个问题?
例如,在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
我过去曾这样做过:
SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(Select 'column_name' from `dirs`)) ORDER BY `id` DESC
如果您将字符串存储"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