2014-05-15 71 views
0

我需要插入到mysql表中。但是,只有满足条件时才应该插入。所以,我想这样的事情发生有选择地插入到mysql表中

INSERT INTO table_name(name,qty,code) VALUES(SELECT i.name,i.qty,i.code FROM table2 i); 

对于这样

IF i.code == 'abcd' && i.name == 'def' THEN perform insert ELSE don't insert 

的条件,我不能使用WHERE子句,因为我要选择和插入所有代码的情况下除外,当它等于'abcd',在这种情况下我想根据条件插入。代码= 'ABCD' 和名称= '高清'

INSERT INTO table_name SELECT i.name,i.qty,i.code FROM table2 i where i.code = 'abcd' and i.name = 'def' 

IF (i.code == 'abcd' && i.name == 'def') 
    BEGIN 
     INSERT INTO table_name(name,qty,code) VALUES(SELECT i.name,i.qty,i.code FROM table2 i) 
    END 
    ELSE 
    BEGIN 
     PRINT('DONT DO ANYTHING') 
    END 
+2

使用 “WHERE(X = M和Y = Z)或(X <> M)” – Strawberry

+0

感谢草莓,似乎是最明智的办法做到这一点。 – Saiesh

+0

它确实,不是吗? – Strawberry

回答

2

@strawberry回答在评论这个问题。这是一个简单的答案,但不知何故真的很好。下面是答案

INSERT INTO table_name(name,qty,code) VALUES 
( 
    SELECT i.name,i.qty,i.code FROM table2 i 
    WHERE (i.code = 'abcd' AND i.name = 'def') OR i.code != 'abcd' 
) 
-1

试试这个也许这样?

INSERT INTO table_name 
(name,qty,code) 
VALUES(SELECT i.name,i.qty,i.code FROM table2 i) 
WHERE IF(i.code == 'abcd' && i.name == 'def', TRUE, FALSE) 

使用MySQL IF()-Function

1

第一次插入所有从表2的行现在,插入有条件其他行

+0

如果我的解决方案炒作,然后请接受它,所以它可以帮助别人.. –

+0

它的工作原理。但不是一个单一的交易。我在下面的话题中提供了答案。 – Saiesh