我有一个表添加了一个新列,我想编写一个SQL语句来根据现有信息更新该列。以下是两个表和相关列
'leagues' => id => league_key => league_id (this is the new column)
'permissions' => id => league_key
现在,用简单的英语,我想做的就是这个
Set leagues.league_id to be permissions.id for each value of permissions.league_key
我曾经尝试过这样的SQL:
更新联赛 SET league_id = (SELECT id FROM permissions WHERE league_key = (SELECT distinct(league_key)FROM leagues)) 其中league_key =(SELECT distinct(league_key)FROM leagues)
但是我收到一条错误消息
错误:用作表达式
的子查询返回多行非常感谢任何帮助
答案 0 :(得分:11)
根据您的要求
为每个权限值设置leagues.league_id为permissions.id.league_key
就是这样。
UPDATE leagues
SET league_id = permissions_id
FROM permissions
WHERE permissions.league_key = leagues.league_key;
答案 1 :(得分:1)
当您将子查询作为表达式执行时,它不能返回结果集。您的子查询必须评估为单个结果。您看到的错误是因为您的一个子查询返回了多个值。