让我们假设你有5列的表 - col1,col2,col3,col4,col5。假设你试图插入的这些列对应的数据在变量中 - $ col1,$ col2,$ col3,$ col4,$ col5(我假设PHP是你的语言,但是请按照你的名字)。
所以你插入可能看起来像:
INSERT INTO `tableA` (`col1`, `col2`, `col3`, `col4`, `col5`)
SELECT $col1, $col2, $col3, $col4, $col5
FROM `tableA`
WHERE NOT EXISTS (SELECT 1
FROM `tableA`
WHERE `col1` = $col1
AND `col2` = $col2
AND `col3` = $col3
AND `col4` = $col4
AND `col5` = $col5);
另一种方法是:
INSERT INTO `tableA` (`col1`, `col2`, `col3`, `col4`, `col5`)
SELECT $col1, $col2, $col3, $col4, $col5
FROM `tableA`
WHERE `col1` = $col1
AND `col2` = $col2
AND `col3` = $col3
AND `col4` = $col4
AND `col5` = $col5
HAVING COUNT(1) = 0;
希望这有助于。
你在桌子上用钥匙吗?您可以使用'按重复键插入'。 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – Tim
@Tim这需要唯一的密钥,@BjörnMarschollek说他不能添加这样的密钥。 –
为什么不能改变桌子,这是做这件事的最好方法。任何其他方式都是黑客行为,如果在锁定完成后发生查询运行期间发生不良情况,并且不释放锁定,则其他任何方法都无法将其插入。 – mikeq