如何在“插入忽略stament”中获取插入行的计数

时间:2016-01-06 12:33:21

标签: mysql

我正在使用插入"ignore statement"进行批量插入并在数据库中插入50万个令牌。在50万令牌中可以有重复的令牌。 因此,如果我使用insert ignore语句在数据库中插入50万个令牌,那么由于重复的令牌,无法保证所有令牌都插入到数据库中。

插入后,我想知道有多少令牌插入数据库。有些人建议使用affected_rows列来计算插入(受影响)的行数。但是affected_rows没有给出当前sql语句的输出,它给出了最后一个sql语句的输出。

请告诉我使用insert ignore statment获取插入行数的最佳方法。

2 个答案:

答案 0 :(得分:0)

select row_count();语句后面放置insert以获取插入的行数。

例如:

insert ignore into tbl(col1) values (1),(2); select row_count();

答案 1 :(得分:0)

执行单个SQL插入忽略将与affected_rows一起使用。不确定这会如何改善性能,因为它要进入0.5密耳行。

无论如何,这是我尝试过的一个解决方案,它可以在一个符号INSERT中使用4个值。

<?php 
$mysqli = new mysqli('127.0.0.1','root','','test');

if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$sql = "INSERT IGNORE INTO test1 (Name, Attribute, Val) VALUES ('ai', 'blue', '1j'),('ai1', 'white', '2j'),('ai2', 'black', '3j'),('ai1', 'green', '4j')";
$insert = $mysqli->query($sql);
printf ($mysqli->affected_rows);
?>