$cardQueryList = [];
foreach($cards as $cardName => $quantity) {
$cardQueryList[] = [
'username' => $user->username,
'card_uid' => $card->uid,
'have_quantity' => $quantity
];
}
Collection::insert($cardQueryList);
即使行存在,上述代码也会创建新行。如果行存在,我如何使它更新。如果没有,它会创建行?雄辩或流利的回答是最佳的,但如果没有其他方法,我对原始的回答持开放态度。
我想用一个查询进行大规模更新/插入。不是每个记录的for查询循环。理想情况下,出于明显的原因,我希望访问数据库一次。
另外,我已经检查了以下链接:
如果不存在,则插入新记录,如果存在,则更新,laravel eloquent
上述操作适用于单个记录更新/插入。如果我运行for循环,速度会非常慢。我正在寻找一个在单个查询中允许大规模插入/更新的答案。
注意:我使用“用户名”和“卡号”作为我的密钥。所以基本上,当我发现一行有用户名和卡号时,我想更新相应的行。否则,创建新行。
如果不需要重复项,请让DB模式阻止重复项的输入。捕获本例中的错误,然后继续。
<?php
$valuesArray = [];
foreach( $cards as $cardName => $quantity )
{
$valuesArray[] = "('".$user->username."','".$card->uid."','".$quantity."')";
}
$db->query
(
"INSERT INTO `TABLE` ( `username`,`card_uid`, `have_quantity` ) VALUES ".implode( ',', $valuesArray )."
ON DUPLICATE KEY UPDATE `have_quantity` = VALUES(`have_quantity`);"
);
确保用户名和卡uid上有主键。另外,不要忘记转义值,并且仅在$valuesArray不为空时运行查询。
通常情况下,您将使用的sql的排序大致如下:-
insert into `TABLE` ( `FIELD1`,`FIELD2`, `FIELD3` ) values ( 'VALUE1','VALUE2','VALUE3' )
on duplicate key
update
`FIELD1`='VALUE1',
`FIELD2`='VALUE2',
`FIELD1`='VALUE3';
我不能告诉你,你会怎么用这个来对付拉威尔!Oops-忘记了更新部分中的字段名
我试图在spring jpa中更新多个表。正在更新使用者表,但提供者表无法更新。相反,它尝试插入导致违反主键,这是预期的,因为它尝试插入而不是更新。虽然我对这两个表的代码流是相同的,但只有生产者有问题。这是我的消费者实体 这是我的消费者存储库 这是我的提供商实体 这是我的提供商存储库 这是日志
问题内容: 在我的tempTBL上,我的linksTBL上有ID,名称,URL,猫,被插入的列TBL我的类别上的ID:名称,别名列在TBL上我在extraTBL上有:cl_id,link_id,cat_id我有:id,link_id,值 我如何执行单个查询以从tempTBL中选择isinsrted = 0的所有项目,然后将它们插入linksTBL并为插入的每个记录选择拾取ID(主要的),然后将该I
问题内容: 有什么方法可以简化为一个查询吗? 问题答案: 是的,您可以使用以下查询进行操作:
我使用。 我每秒接收15万个请求,并将其插入到具有不同分区键的8个表中。 我的问题是哪种方式更好: 批量插入这些表 一个接一个地插入。 我问这个问题是因为,考虑到我的请求大小(150k),批处理听起来是更好的选择,但是因为所有的表都有不同的分区键,所以批处理显得很昂贵。
嗨,我的数据库结构如下: 表:分析 现在我想批量更新数据。例如,我想选择用户_id=1的数据以及2016-03-01和2016-03-20之间的日期。然后我想将结果中得到的所有记录的列从0更新为1。 我所做的工作如下: 但这不起作用,也没有显示任何错误。请让我知道在雄辩的帮助下我能做什么。提前谢谢。 我也看到了StackoverFlow中的其他问题,但答案建议运行foreach循环,这是我不想要的
问题内容: 我有这样的简单表: 我想更新哪里的行,但是如果没有行我想更新的行: 仅可能进行一次查询吗? 问题答案: 你可以利用 列上应该有UNIQUE索引 SQLFiddle