我尝试了几种在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/