仅当在表1中找到要插入的值时才插入表2

时间:2013-08-29 17:43:00

标签: mysql sql

我有两个表Table1和Table2。

我在Table2上使用插入如下:

insert into table2    
(colOne, colTwo, colThree) //and many more cols 
  values 
(1, norman, US) //and many more values that come from a form and not table1

只有在Table1中存在值(1,norman,US)时,我才希望插入成功。价值观(1,诺曼,美国)来自一种形式。我怎么能这样做。

目前我使用了两个步骤来完成此操作。一个检查值是否存在,两个 - 插入

3 个答案:

答案 0 :(得分:1)

您可以使用INSERT INTO... SELECT... WHERE

像这样的东西

insert into table2 (col1, col2, col3)
select (1, 'norman', 'US') from Table1 t1 -- where 1, 'norman', 'US' are your variables from a Form
where t1.id=1 and t1.name = 'norman' and t1.country = 'US' -- same

SqlFiddle演示“选择我想要的任何东西”。

答案 1 :(得分:1)

您可以使用此方法:

INSERT INTO table2    
(colOne, colTwo, colThree)
SELECT colOne, colTwo, colThree 
FROM 
(SELECT 1  AS colOne,'norman' AS colTwo,'US' AS colThree
 UNION
 SELECT 2,'sabt','US' 
 UNION
 SELECT 3,'ebi','US' 
)p
WHERE 
    EXISTS (
            SELECT 1 FROM table1
            WHERE table1.colOne = p.colOne AND 
                  table1.colTwo =p.colTwo AND 
                  table1.colThree =p.colThree
            )
祝你好运。

答案 2 :(得分:0)

这样的事情通常是通过触发来完成的。为table1注册一个插入后触发器,并为table2执行插入。

http://technet.microsoft.com/de-de/library/ms189799.aspx