MySQL IN 構文
IN 演算子は、リスト項目の形式での複数選択をサポートするために WHERE 式で使用されます。構文は次のとおりです:
WHERE column IN (value1,value2,...) WHERE column NOT IN (value1,value2,...)
IN の前に NOT 演算子がある場合、IN の逆の意味を意味します。つまり、これらのリスト項目内では選択しないでください。
IN 使用例
uid 2、3、および 5 のユーザー データを選択します:
SELECT * FROM user WHERE uid IN (2,3,5)
返されるクエリ結果は次のとおりです:
IN サブクエリ
多くの場合、IN リスト項目の値は不明ですが、サブクエリを通じて取得できます:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
この SQL 例では、ステータスが 0 (おそらく禁止) であるすべてのユーザーのすべての記事を検索するメソッドを実装しました。まず、クエリを通じて status=0 のすべてのユーザーを取得します:
SELECT uid FROM user WHERE status=0
次に、クエリ結果を IN のリスト項目として使用して、最終的なクエリ結果を取得します。サブクエリで返される結果はフィールド リスト項目である必要があることに注意してください。
IN 演算子の補足説明
IN リスト項目は数値だけでなく文字、さらには時刻や日付の型もサポートしており、これらの異なる型のデータ項目を列の型と一貫性を持たせることなく混合して配置することができます:
SELECT * FROM user WHERE uid IN(1,2,'3','c')
IN 範囲内で比較できるフィールドは 1 つだけです。さらにフィールドを指定したい場合は、AND または OR 論理演算子を使用できます。
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
AND または OR 論理演算子を使用した後、IN を次のような他のフィールドと比較することもできます。 LIKE、>=、= は他の演算子と一緒に使用されます。
IN 演算子の効率の問題について
IN のリスト項目が確実である場合、代わりに複数の OR を使用できます:
SELECT * FROM user WHERE uid IN (2,3,5) // 等效为: SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
一般に、インデックス フィールドを操作する場合、OR を使用する方が効率的であると考えられています。 IN。ただし、リスト項目が不確実な場合 (サブクエリの結果が必要な場合など)、IN 演算子を使用する必要があります。また、サブクエリテーブルのデータがメインクエリよりも小さい場合には、IN 演算子も適用できます。
上記は MySQL IN の使用に関する内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (m.sbmmt.com) をご覧ください。