MySQL如果变量组合不存在则插入表中

时间:2014-08-26 17:00:11

标签: mysql sql

如果数据库中不存在两个值的组合,我需要在表中插入值。我不关心anotherdata(如果它们存在或不存在)。让我们有一个这样的表:

+---+---+--------------+
| x | y | anotherdata  |
+---+---+--------------+
| 1 | 1 | some string  |
| 1 | 2 | string2      |
| 1 | 3 | string3      |
+---+---+--------------+

我的解决方案是首先查询数据库是否有给定记录:

SELECT * FROM map WHERE x = ? AND y = ?

如果num_rows为0,则插入新记录:

INSERT INTO table (x, y, anotherdata ) VALUES (?, ?, ?)

如果num_rows大于0,则不执行任何操作。

我不能在这里使用唯一键,因为x和y不是唯一的。独特只是他们的组合。另外我希望这个表有数千条记录,使用多个查询会非常慢。

1 个答案:

答案 0 :(得分:0)

解决方案是在两列的组合上使用UNIQUE KEY。您的查询也应如下所示:

INSERT IGNORE INTO table (x, y, anotherdata ) VALUES (?, ?, ?)