gpt4 book ai didi

MySQL:使用来自pair子句的Select字段的结果插入

转载 作者:行者123 更新时间:2023-11-29 14:02:58 32 4
gpt4 key购买 nike

我需要向现有行添加额外的数据项并将结果插入到第二个表中。我选择的每一行的数据项都不同,因此我不能将其添加到 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 不等。

如果这是一个重复,真的很抱歉。我查过类似的东西: Select Query by Pair of fields using an in clause MySQL: How to bulk SELECT rows with multiple pairs in WHERE clause我想我可以使用临时表,但我担心它被调用的次数。

编辑--

澄清一下,源表类似于:

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

希望这能让事情变得更清楚。

最佳答案

试试这个

SELECT player_id,token_id, email, key_val 
FROM players
WHERE token_id in (101,102) AND key_val IN ('xyz','abc')
OR ( email in ("test4@test.com") AND key_val IN ('qpr') );

编辑-。试试这个

 SELECT player_id,token_id, email, key_val 
FROM ( select player_id,token_id, email,
if(`token_id` =101 , 'xyz',
if(`token_id` =102 , 'abc' ,
if(email = "test4@test.com" , 'qpr' , NULL))
) key_val

from players
)p

DEMO SQLFIDDLE

关于MySQL:使用来自pair子句的Select字段的结果插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790159/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com