我在使用python更新mysql数据库中的记录时遇到了一个奇怪的问题。也就是说,错误1046是由python组抛出的,但是相同的mysql语句在mysql workbench中运行得非常好。在
这是mysql语句UPDATE r resultant_data d
INNER JOIN
(SELECT
uid,
SUBSTRING_INDEX(GROUP_CONCAT(login_type
ORDER BY device_ct DESC), ',', 1) devices
FROM
(SELECT
uid, login_type, COUNT(*) AS device_ct
FROM
login_record l
WHERE
l.ctime > 1451577600
AND l.ctime < 1454256000
GROUP BY uid , login_type
ORDER BY device_ct DESC) a
GROUP BY uid) ct ON d.uid = ct.uid AND d.month_id = 1
SET
d.device = ct.devices
;
我的任务是根据登录记录表将一个用户一个月内最常用的登录设备更新为表结果数据。所以第一步(最里面的查询):创建一个表,显示uid、登录设备、登录时间(即设备)。第二步(第二个最里面的查询):根据设备,找出与most设备关联的uid和登录类型。第三步(更新层):匹配uid并将记录更新为结果的_数据。在
那么问题是不是来自python?还是mysql语句?我怀疑这个问题是由“inner join”命令引起的(虽然它在mysql workbench中工作正常。我以前有一个类似的问题,通过将“inner join”重写为“where uid in(select….)”,解决了这个问题。但是对于这个任务,有没有办法重写或重组语句?在
非常感谢。在