我有一个表auction_activity_notifications
,其中需要从users
表和列item_watch
插入id,还需要加入email_templates
表,还需要插入auction_activity_notifications
我进行这个查询的地方是插入用户的ID和item_watch列,我需要加入email_templates
并将ID从email_templates
插入auction_activity_notifications
INSERT INTO auction_activity_notifications (id_user, id_target)
SELECT id, item_watch
FROM users AS u
LEFT JOIN auction_activity_notifications AS aa
ON u.id = aa.id_user
AND
u.item_watch=aa.id_target
我在auction_activity_notifications
中有这些列
最后,我需要将当前日期插入created_date_time
id_email_templates, id_user , id_target , created_date_time
在查询中再添加一个联接
INSERT INTO auction_activity_notifications (id_email_templates,id_user, id_target,created_date_time)
SELECT et.id,u.id, u.item_watch ,NOW()
FROM users AS u
LEFT JOIN auction_activity_notifications AS aa
ON u.id = aa.id_user
LEFT JOIN email_templates et ON (aa.id_email_templates=et.id)
AND
u.item_watch=aa.id_target
请注意,当联接表中的列相同时,请将表别名与列名一起使用,这样可以保护列的不明确条件
对于当前日期时间,您可以使用datatype
作为timestamp
,并通过设置CURRENT_TIMESTAMP
设置表列默认值,从选择中删除NOW()
,从插入中删除created_date_time
,它将自动添加当前时间戳,并记录插入的
ALTER TABLE `table` CHANGE `created_date_time` `created_date_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;