如果数据库中不存在两个值的组合,我需要在表中插入值。我不关心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不是唯一的。独特只是他们的组合。另外我希望这个表有数千条记录,使用多个查询会非常慢。
答案 0 :(得分:0)
解决方案是在两列的组合上使用UNIQUE KEY
。您的查询也应如下所示:
INSERT IGNORE INTO table (x, y, anotherdata ) VALUES (?, ?, ?)