0

データベースの構造の 1 つで値を検索したいのですが、コードが正しく動作しません

// $dir_id = 2;
// dirs (in database) = 1,2,3

SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(`dirs`)) ORDER BY `id` DESC

しかし、このコードは2を見つけることができず、1を見つけるだけですdirs

どうすればこれを解決できますか?

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。(を通じて、データベースの設計を正規化する必要があります。 )

その場合は使用できません。代わりにFIND_IN_SETINを使用する必要があります。

SELECT * FROM `items` 
WHERE (id='$id' AND FIND_IN_SET('$dir_id', `dirs`)) 
ORDER BY `id` DESC
于 2012-10-04T11:39:26.300 に答える