既存の行に追加のデータ項目を追加し、その結果を 2 番目のテーブルに挿入する必要があります。選択する行ごとにデータ項目が異なるため、単純に SELECT ステートメントに追加することはできません。元のクエリは次のとおりです。
SELECT player_id,token_id,email FROM players
WHERE token_id in (101,102) OR email in ("test4@test.com");
行コンストラクターのようなものを実行して、次のようなクエリを記述できるようにしたいと思います。
SELECT player_id,token_id, email, key_val FROM players
WHERE (token_id, key_val) in ( (101, 'xyz'),(102,'abc'))
OR (email, key_val) in ( ("test4@test.com", 'qpr') );
そのため、IN 句のペアの 2 番目の値 ('key_val') が最後の列として SELECT 出力に追加されます。そして、ロット全体がファイナル テーブルに挿入されます。
IN 句の項目数は、3 から場合によっては 100 までさまざまです。
これが重複である場合は本当に申し訳ありません。次のようなものを調べました: in 句を使用したフィールドのペアによるクエリの選択 MySQL: WHERE 句で複数のペアを使用して SELECT 行を一括処理する方法 一時テーブルを使用できると思いますが、これが呼び出されます。
編集 -
明確にするために、ソース テーブルは次のようなものです。
player_id, token_id, email
===================================
1 101 null
2 102 null
3 null test4@test.com
提供される日付は次のとおりです。
(token_id=101, key_val='xyz'),(token_id=102, key_val='abc'),(email='test4@test.com', key_val='qpr')
意図した出力は次のようになります。
player_id token_id email keyy_val
========== ========= ============== ========
1 101 null zyz
2 102 null abc
3 null test4@test.com qpr
これがより明確になることを願っています。