在SQL Server中,可以insert使用SELECT语句进入表:
INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM other_table
WHERE sql = 'cool'
Run Code Online (Sandbox Code Playgroud)
是否也可以通过?更新SELECT?我有一个包含值的临时表,并希望使用这些值更新另一个表.也许是这样的:
UPDATE Table SET col1, col2
SELECT col1, col2
FROM other_table
WHERE sql = 'cool'
WHERE Table.id = other_table.id
Run Code Online (Sandbox Code Playgroud) 几个月前,我从Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新:
INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z)
ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2);
Run Code Online (Sandbox Code Playgroud)
我现在切换到PostgreSQL,显然这是不正确的.它指的是所有正确的表,所以我认为这是使用不同关键字的问题,但我不确定PostgreSQL文档中的哪个被覆盖.
为了澄清,我想插入几个东西,如果它们已经存在则更新它们.
我是laravel的新手,我试图更新我的导航树.所以我想在没有foreach的情况下在一个查询中更新我的整个树.
array(
array('id'=>1, 'name'=>'some navigation point', 'parent'='0'),
array('id'=>2, 'name'=>'some navigation point', 'parent'='1'),
array('id'=>3, 'name'=>'some navigation point', 'parent'='1')
);
Run Code Online (Sandbox Code Playgroud)
我只是想问一下 - 在laravel中是否可以插入(如果是数组中的新)或更新我在数据库中的当前行?
我想更新所有,因为我在我的树中有字段_lft,_right,parent_id,我使用一些可拖动的js插件来设置我的导航结构 - 现在我想保存它.
我试着用
Navigation::updateOrCreate(array(array('id' => '3'), array('id'=>'4')), array(array('name' => 'test11'), array('name' => 'test22')));
Run Code Online (Sandbox Code Playgroud)
但它只适用于单行,而不是像我试图做的那样多行.也许有另一种方法可以做到这一点?
我正在使用 Peewee 和 Postgres 数据库。我想知道如何一次更新一个表中的多条记录?我们可以使用这些命令
在 SQL 中执行此更新,我正在寻找 Peewee 等效方法。