mysql update子查询无法指定表目标问题

f45qwnt8  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(373)

我已经通过了许多查询,但似乎找不到正确的组合,使这项工作。我得到错误“您不能在from子句中指定更新的目标表't1'。我知道mysql不喜欢update语句中的子查询,也读过将其 Package 到其他select语句中的内容,但似乎无法理解。下面是我要找的内容的详细查询:

UPDATE myTable t1 SET t1.num=concat(t1.num,'B') WHERE t1.num in ('1','2') and t1.expiry=(SELECT max(t2.expiry) from myTable t2 where t2.num=t1.num);

基本上是尝试获取每个号码(num)的最新日期(到期日),并在适用的情况下更改号码。

aelbi1ox

aelbi1ox1#

这应该起作用:

UPDATE myTable t1, (SELECT num, max(expiry) expiry from myTable t2 group by num) t2
SET t1.num = concat(t1.num,'B')
WHERE t1.num in ('1','2')
and t1.expiry = t2.expiry
and t1.num = t2.num;

相关问题