MySQL Update子查询无法指定表目标问题

时间:2018-09-06 17:54:54

标签: mysql

我已经经历了很多查询,但是似乎找不到合适的组合来使其正常工作。我收到错误消息“您无法在FROM子句中指定目标表't1'进行更新”。我知道MySQL不喜欢update语句中的子查询,并且已经阅读了有关将其包装在其他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)的最新日期(有效期限),并在适用的情况下更改数字。

1 个答案:

答案 0 :(得分:1)

这应该有效:

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;