ホームページ >データベース >mysql チュートリアル >SQL の IN 句でタプル ペアを効率的にクエリするにはどうすればよいですか?
SQL IN 句でのタプルの使用: 文字列連結の代替
SQL では、IN 句を使用してフィールドをセットと比較できます。価値観の。ただし、複数の値を含むタプルの処理には課題が生じる可能性があります。
問題
フィールド group_id と group_type を持つテーブルを考え、特定のタプルを持つレコードをクエリしたいとします。ペア、たとえば:
SELECT * FROM mytable WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))
文字列連結を使用するための提案されたソリューションは、次のようになります。大規模なテーブルの場合は非効率的です:
SELECT * FROM mytable WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")
標準 SQL ソリューション
より効率的な解決策は、IN 句のタプルに標準 SQL-92 構文を使用することです。 VALUES キーワード:
SELECT * FROM mytable WHERE (group_id, group_type) IN ( VALUES ('1234-567', 2), ('4321-765', 3), ('1111-222', 5) );
この構文はいくつかの SQL 製品でサポートされています。 PostgreSQL および SQLite を含みます。
Microsoft SQL Server 注
この記事の執筆時点 (SQL Server 2022) では、この構文は Microsoft SQL Server ではサポートされていません。
以上がSQL の IN 句でタプル ペアを効率的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。