我需要向现有行添加额外的数据项并将结果插入第二个表中。我选择的每一行的数据项都是不同的,所以我不能只将它添加到 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 子句中对的第二个值 ('key_val') 将作为最后一列添加到 SELECT 输出中。然后整个批次将被插入决赛桌。
IN 子句中的项目数从 3 到可能 100 不等。
如果这是一个重复,真的很抱歉。我查找了类似的内容: 使用 in 子句按字段对选择查询 MySQL:如何在 WHERE 子句中批量选择具有多对的行 我想我可以使用临时表,但我担心这样的次数这将被调用。
编辑 -
为了澄清,源表是这样的:
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
希望这能让它更清楚。