mysql では、in は特定の範囲内のデータをクエリするために where 式とともに使用されます。構文は「select * from where field in (value)」または「select * from where field not in (value)」です。 」。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
mysql での in の使用法は何ですか
mysql での in は、よく次の場所で使用されます。式 、その機能は、特定の範囲内のデータをクエリすることです。
select * from where field in (value1,value2,value3,…)
IN の前に NOT 演算子がある場合、IN の逆の意味、つまりこれらのリスト項目内で選択しないことを意味します
select * from where field not in (value1,value2,value3,…)
Update 多くの場合、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 サブクエリでは、クエリ効率が低いという問題がよく発生します。解決策は次のとおりです:
1. in サブクエリを使用し、もう 1 つクエリを実行します。 time
SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )
2. LEFT JOIN
SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode
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','manong')
AND または OR 論理演算子を使用した後、IN を LIKE、>=、= などの他の演算子と一緒に使用することもできます。
IN のリスト項目が確実な場合は、代わりに複数の OR を使用できます:
SELECT * FROM user WHERE uid IN (2,3,5)
// 同等のものは次のとおりです:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
一般に信じられている点:
1. インデックス フィールドを操作する場合、IN よりも OR を使用した方が効率が高くなりますが、リストの項目が不確実な場合 (クエリを取得するためにサブクエリが必要な場合など)結果 )、IN 演算子を使用する必要があります。また、サブクエリテーブルのデータがメインクエリよりも小さい場合には、IN 演算子も適用できます。
2. or がフィールドにインデックスを追加しない場合、接続されるフィールドが増えるほど (1 または 2、3、4 または...)、 or のクエリ効率はそれよりも大幅に低くなります。の。
[関連する推奨事項: mysql ビデオ チュートリアル ]
以上がmysqlでのinの使い方は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。