我尝试了几种在select子句中实现子查询的方法。基本上,我只想在一个表中查找日期并将其存储在另一个表中。在此示例中,我收到错误消息“ where子句中的未知列'areckey'”

insert into cmeFillCompaction  set
  reckey=2421,
  areckey=3170,
  WEBDATE=(select pickupdate from cmeSchedule s where s.reckey=areckey)
on duplicate key update
  reckey=2421,
  areckey=3170,
  WEBDATE=(select pickupdate from cmeSchedule s where s.reckey=areckey)


正确的语法是什么?

最佳答案

您不能使用这样的相关子查询,因为该行尚不存在要进行比较。使用INSERT...SELECT。而且,您无需重复ON DUPLICATE KEY子句中的值,可以使用VALUES(columnname)来获取如果INSERT成功则应分配给该列的值。

INSERT INTO cmeFillCompaction (reckey, areckey, webdate)
SELECT reckey, 3170, pickupdate
FROM cmeSchedule
WHERE reckey = 2421
ON DUPLICATE KEY UPDATE webdate = VALUES(webdate)

关于mysql - 子查询中比较变量上的MySQL子查询错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37950701/

10-10 00:30