Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将列的值添加到SQL CONCAT查询_Mysql_Sql - Fatal编程技术网

Mysql 将列的值添加到SQL CONCAT查询

Mysql 将列的值添加到SQL CONCAT查询,mysql,sql,Mysql,Sql,我正在尝试将一列的值添加到SQL CONCAT查询中,以便能够更新另一列,让我演示一下 我需要列“winner”的值并将其添加到我的查询中,因为我要完成的是查询说从x中选择team2\u name,其中matchid=1 这就是我到目前为止所尝试的 UPDATE tournament_matches SET match_id = 5 WHERE team_name IN ( SELECT CONCAT(@winner, '_name') FROM get5_stats_m

我正在尝试将一列的值添加到SQL CONCAT查询中,以便能够更新另一列,让我演示一下

我需要列“winner”的值并将其添加到我的查询中,因为我要完成的是查询说
从x中选择team2\u name,其中matchid=1

这就是我到目前为止所尝试的

UPDATE tournament_matches 
SET match_id = 5 
WHERE team_name IN (
    SELECT CONCAT(@winner, '_name') 
    FROM get5_stats_matches 
    WHERE match_id = 1
);
但它不会影响任何行,因为
CONCAT(@winner,'.\u name')
不会显示我需要它显示的team2\u name


我哪里出错了?

我想这就是你想要的:

UPDATE tournament_matches
SET match_id = 5
WHERE team_name IN (
    SELECT IF(winner = 'team1', team1_name, team2_name)
    FROM get5_stats_matches
    WHERE match_id = 1);
不能使用表达式直接指定列名

演示:


为什么在
获胜者之前有
@
?这是使用用户定义的变量,而不是表列。将
@winner
更改为
winner
。如果我只键入winner+“\u name”,它将更新两行而不是一行。请发布两个表中的示例数据和所需结果。它应该是
CONCAT(winner,\u name')
,不是
winner+“\u name”
不过,这似乎效果很好。当SELECT IF语句变为false时,它会更新2行,这是为什么?必须有两行
team\u name='Svertila'
。如果两个都不更新,它应该更新哪一个?它实际上只是一行,team_name='Svartlila',我尝试了
选择if(winner='team1',team1_name,team2_name)
,它运行良好,并返回了正确的结果,当我将它添加到整个查询中时,它只在team1是赢家时才起作用,如果我们更改列值,使team2成为赢家,则两行将更新。正在更新的第二行的团队名称是什么?我要求您提供示例数据,我将再次询问。