我正在更新电话号码表中的一个标志
isbest:必须是移动的,优先级应最接近0
cpf是外键,所以一个id可以有多个电话,但只有一个会收到isbest标志
UPDATE telefone SET isbest = 1 WHERE fullnumber in (SELECT fullnumber,min(priority)
FROM telefone
WHERE phonetype = "MOBILE"
GROUP BY telefone.cpf
)
但我有个错误:
sub select返回2列-应为1
我把密码改成
UPDATE telefone SET isbest = 1 WHERE fullnumber in (SELECT fullnumber
FROM telefone
WHERE phonetype = "MOBILE"
GROUP BY telefone.cpf
ORDER BY priority asc
)
但是它更新的数字比预期的多(但是单独运行时的子查询显示正确的行)
在第一个代码中,我尝试添加另一个子查询(从(…)中选择fullnumber),但也没有帮助(同样,子查询本身看起来是正确的)
我将sqlite3与sqlitestudio一起使用
热释光;dr代码运行时,at影响的行数比预期的多,但只有子查询看起来是正确的
1条答案
按热度按时间flvlnr441#
使用
=
而不是IN
并确保相关子查询仅返回1行: