【问题标题】:Insert statement with a join between two tables在两个表之间连接的插入语句
【发布时间】:2018-09-18 08:39:11
【问题描述】:

我希望能够从两个表中插入数据,并通过触发器连接到第三个表,我的插入查询如下:

INSERT INTO reg04_rpt_animreg 
(animalid
,tagid
,tagprefix
,tagsec
,name
,color
,sex
,inadggbundle
,hh_id
,regdate) VALUES 
(NEW.animalid
,NEW.tagid
,NEW.tagprefix
,NEW.tagsec
,NEW.name
,NEW.color
,NEW.sex
,1
,NEW.farmermobile
,now()
);

但是我需要内连接两个表来获得NEW.farmermobile的值,是否可以使用插入语句进行内连接?

【问题讨论】:

  • 我不明白这个问题,您是说 NEW.farmermobile 与所有其他 NEW 在不同的表中。价值观?
  • INSERT INTO x... SELECT ...

标签: mysql triggers


【解决方案1】:

您可以从 SELECT 查询而不是文字 VALUES 列表中获取要插入的值。

INSERT INTO reg04_rpt_animreg (animalid, tagid, tagprefix,tagsec,name,color,sex,inadggbundle,hh_id,regdate)
SELECT NEW.animalid, new.tagid, ,NEW.tagprefix,NEW.tagsec,NEW.name,NEW.color,NEW.sex,1,
        t1.column, now()
FROM someTable AS t1
JOIN someOtherTable AS t2 ON t1.something = t2.somethingelse

【讨论】:

    【解决方案2】:

    我认为这是一种不好的做法,因为这意味着您的数据会重复。 最好将数据插入到两个表中,然后,当您需要连接数据时,使用 SELECT 查询和 INNER JOIN 将 2 个表中的数据放入 1 个结果表中。

    您还可以定义一个为您执行此操作的 VIEW。但是,不要复制您的数据。它使事情变得复杂。

    【讨论】:

    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多