不要在SQL中插入任何重复项组合

时间:2015-01-28 05:03:27

标签: mysql sql

现在我只是

INSERT INTO MY_TABLE (VAL1, VAL2)
SELECT VAL1, VAL2 FROM OTHER_TABLE;

但是,如果MY_TABLE已经包含值(1, 2),那么如果(2,1)位于(2,1),我就不想让它OTHER_TABLE; < / p>

有没有办法在这里,甚至在创建表时这样做?

我已尝试ALTER该表并创建UNIQUE约束但不考虑重复

3 个答案:

答案 0 :(得分:2)

试试这个。

SELECT VAL1,
       VAL2
FROM   OTHER_TABLE a
WHERE  NOT EXISTS (SELECT 1
                   FROM   my_table b
                   WHERE  ( a.val1 = b.val2
                            AND a.val2 = b.val1 )
                           OR ( a.val1 = b.val1
                                AND a.val2 = b.val2 )) 

答案 1 :(得分:0)

如果目标表上已存在UNIQUE约束,您应该能够使用IGNORE命令来防止重复记录。

http://dev.mysql.com/doc/refman/5.5/en/insert.html

INSERT IGNORE INTO MY_TABLE (VAL1, VAL2)
    SELECT VAL1, VAL2 FROM OTHER_TABLE

答案 2 :(得分:0)

我们可以在创建表格时放置条件:

创建表my_table (
val1 int,
 val2 int,

检查(val,val2 not in(选择val1,val2来自other_table,my_table,其中my_table.val1 = other_table.val2和my_table.val2 = other_table.val1)
工会
从my_table mt1选择val1,val2,mt2,其中mt1.val1 = mt2.val2和mt1.val2 = mt2.val1))

);