Mysql 如何获取“中插入行的计数”;插入“忽略stament”;
我正在使用insertMysql 如何获取“中插入行的计数”;插入“忽略stament”;,mysql,Mysql,我正在使用insert“ignore语句”进行批量插入,并在数据库中插入50万个令牌。在50万个代币中,可以有重复的代币。 因此,如果我使用insert ignore语句在数据库中插入50万个令牌,则无法保证所有令牌都会因为重复的令牌而插入数据库 在插入之后,我想知道有多少令牌被插入到数据库中。一些人建议使用受影响的行列来获取插入(受影响)行的计数。但受影响的_行不会给出当前sql语句的输出,而是给出最后一条sql语句的输出 请告诉我使用insert ignore语句获取插入行数的最佳方法。Pu
“ignore语句”
进行批量插入,并在数据库中插入50万个令牌。在50万个代币中,可以有重复的代币。
因此,如果我使用insert ignore语句在数据库中插入50万个令牌,则无法保证所有令牌都会因为重复的令牌而插入数据库
在插入之后,我想知道有多少令牌被插入到数据库中。一些人建议使用受影响的行
列来获取插入(受影响)行的计数。但受影响的_行不会给出当前sql语句的输出,而是给出最后一条sql语句的输出
请告诉我使用insert ignore语句获取插入行数的最佳方法。Putselect row_count()
紧跟在insert
语句之后,以获取插入的行数
例如:
执行一次SQL插入忽略操作可以处理受影响的_行。不确定这将如何证明性能明智,因为它的0.5百万行进入 无论如何,这里有一个我尝试过的解决方案,在单插入中使用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);
?>
您使用的是50万条INSERT语句,还是1条值为50万的INSERT语句?1条INSERT语句有50万行…如果在“printf($mysqli->受影响的_行)”语句之前执行另一个进程(请求)的另一个INSERT语句,那么它将给出此INSERT的计数,而不是您在示例中提到的计数。
<?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);
?>