在mysql中要保证列的唯一,自然会想到用唯一键来实现。但是若是表中原本没有唯一键约束,原有数据也不满足唯一性,则可使用讨巧的方法,在不建唯一键约束的前提下保证后续新数据的唯一。
INSERT INTO Table(uni_col,col,...) SELECT v_1,v_2,... FROM DUAL WHERE NOT EXISTS( SELECT * FROM Table WHERE uni_col=v_1);
- 其中DUAL是一个虚拟表,mysql和oracle中均有提供,未在oracle中实践过。