0

我想在数据库的结构之一中找到一个值,但我的代码无法正常工作

// $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

我该如何解决这个问题?

4

3 回答 3

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
于 2012-10-04T00:07:13.890 回答
0

我过去曾这样做过:

SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(Select 'column_name' from `dirs`)) ORDER BY `id` DESC 
于 2012-10-04T11:31:12.923 回答
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
于 2012-10-04T11:39:26.300 回答