现在我只是
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
约束但不考虑重复
答案 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))
);