0
我有要求将一个额外的数据项添加到现有的行,并将结果插入到第二个表中。数据项对于我选择的每一行都不相同,所以我不能将它添加到SELECT语句中。原来的查询是:MySQL:使用对子句中的选择字段的结果插入
SELECT player_id,token_id,email FROM players
WHERE token_id in (101,102) OR email in ("[email protected]");
我希望能够做到像一排构造和编写查询是这样的:
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 (("[email protected]", 'qpr'));
所以这第二个值(“key_val” )来自IN子句中的对将作为最后一列添加到SELECT输出中。然后整个批次将被插入到最终表格中。
IN子句中的项目数将从3到100之间不等。
真的很抱歉,如果这是一个dup。我抬头看起来像这样: Select Query by Pair of fields using an in clause MySQL: How to bulk SELECT rows with multiple pairs in WHERE clause 我想我可以使用临时表,但我担心这将被称为次数。
Edit--
为了澄清,源表是这样的:
player_id, token_id, email
===================================
1 101 null
2 102 null
3 null [email protected]
和日期被提供的是:
(token_id=101, key_val='xyz'),(token_id=102, key_val='abc'),(email='[email protected]', key_val='qpr')
和预期的输出将是:
player_id token_id email keyy_val
========== ========= ============== ========
1 101 null zyz
2 102 null abc
3 null [email protected] qpr
希望这可以让它更清晰。
这是不太一样的,因为它也将匹配token_id/key_val对101,ABC和102/XYZ,这是不是在OP的要求行。 – hrunting 2013-02-09 16:56:15
也许我没有解释得很好。 'key_val'不在数据库中。它是与我想在SELECT输出中添加一行的token_id(来自客户端设备)相关的一段数据。 – jmc 2013-02-09 16:56:47
试试我编辑的答案 – 2013-02-09 19:22:40