Mysql 将列的值添加到SQL CONCAT查询
我正在尝试将一列的值添加到SQL CONCAT查询中,以便能够更新另一列,让我演示一下 我需要列“winner”的值并将其添加到我的查询中,因为我要完成的是查询说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
从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成为赢家,则两行将更新。正在更新的第二行的团队名称是什么?我要求您提供示例数据,我将再次询问。