1
SELECT l.name 
FROM locations as l 
WHERE
    l.location_id =',2,32,'

別のテーブルから取得した ",2,32," 値。location_id=2 の値と 32 の値がありますが、このクエリの結果はゼロです。「,2,32,」を使用して結果を取得する方法を教えてください。

4

3 に答える 3

1

where 句を に変更する必要がありますWHERE l.location_id LIKE '%2,32%'

ロケーション ID に 2 と 32 以外の値を含めることができます。

もう 1 つの提案は、location_id ごとに 1 つの行を使用することです。これは正規化と呼ばれ、なぜそれを使用するのかを理解することが重要です。はい、一部のデータが複製されますが、クエリが簡単になります。その後、行うことができますWHERE l.location_id IN (2,32)

編集:

あなたの質問を読み直したところ、あなたの場所のテーブルはすでに正規化されているようです。私が投稿した 2 番目の WHERE 句を使用するだけです。

于 2012-10-09T04:38:31.543 に答える
1

ID 2 と 32 の値を返したいとすると、次のクエリを使用できます。

SELECT l.name FROM locations AS l WHERE l.location_id IN (2, 32);

IN演算子を使用するmultiple-valuesと、WHERE句で指定できます

特定の ID を削除するために使用NOT INすることもできます。コンマで区切るだけで ID を追加することもできます。

于 2012-10-09T04:39:24.373 に答える
0

location_id 列がVARCHARコンマ区切りの値を含む列である場合、WHERE句は次のようになります。

WHERE 
    (l.location_id LIKE '2,32%' OR l.location_id LIKE '%,2,32%' OR l.location_id LIKE '%,2,32')

ただし、location_id 列が列の場合、NUMERIClocation_id が 2 または 32 の行を取得する意図は、次のように対処する必要があります。

WHERE location_id IN (2, 32)
于 2012-10-09T04:42:49.553 に答える