插入到中有2个连接


insert into with 2 joins?

我有一个表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;