我正在尝试执行经典的插入/更新方案,我需要更新数据库中的现有行,或者如果它们不存在则插入它们.
我已经找到了关于这个主题的上一个问题,但是它涉及我不使用的存储过程.我想只使用简单的SQL SELECT,INSERT和UPDATE语句,除非有更好的可用(MERGE语句在SQL Server 2005中不可用).
我想我的一般想法是这样的:
If the row is found
update
else
insert
Run Code Online (Sandbox Code Playgroud)
至于检查行的存在,在调用UPDATE或INSERT之前执行SELECT语句有多昂贵?或者最好只尝试UPDATE,检查受影响的行数,然后在受影响的行为0时执行INSERT?
我想在我的表tblSubscriptions中插入数据,我只想使用一个insert语句.我将为User Table中的每个userId插入数据.以下SQL不起作用.
Insert tblSubscriptions (UserID, ProductID, isACtive, SubscriptionDays, Price, MonthlyPrice, ProductType, CurrencyID)
Values ((Select userID From tblUser where SubscriptionType in(1, 0, null)), 7, 1, 0, 0, 0, 30, 1)
Run Code Online (Sandbox Code Playgroud)
如何使用一个插入语句,即没有游标.
我有一个备份实用程序,用于恢复部分。这是我的桌子:
CREATE TABLE "SBOOKS"."DEV_CORPUS"
( "CORPUSID" NUMBER(9,0) NOT NULL ENABLE,
"CORPUS_NAME" VARCHAR2(768 BYTE) NOT NULL ENABLE,
"CORPUSLASTSYNC" DATE,
PRIMARY KEY ("CORPUSID")
Run Code Online (Sandbox Code Playgroud)
在恢复类中,我想在表中查找主键,如果存在则更新该行,如果不存在则插入一行。
现在的问题是我需要从类传递参数(它们不存在于任何表中),我该怎么做?你的建议是什么?使用准备好的语句还是什么?如何?请给出示例或来源链接。
更多信息:我正在使用 oracle sql Developer 和 java netbeans。
编辑: 我正在命令窗口中尝试此操作:
MERGE INTO dev_corpus a
USING (SELECT corpusid, corpus_name, corpusdesc, corpusimageids, rocf1, rocf2, rocf3, rocc1, rocc2, rocc3, corpusactive, corpusrunfrequency, corpuslastrun, corpuslastsync, rocsettingid, corpusaffinity, corpusterms, corpusdomain FROM dual WHERE corpusId = 1000156 AND corpus_name = 'sahar' AND corpusdesc = 'sahaaaaa' AND corpusimageids IS NULL AND rocf1 IS NULL AND rocf2 …Run Code Online (Sandbox Code Playgroud) 我有这个代码,可以在一个查询中插入多行.
我不想做的是,如果colA已经存在于数据库更新colB中.
我已经看过使用INSERT ON DUPLICATE KEY UPDATE,但我只能看到它在一行中工作,我可以有1000行.
如何在代码上使用INSERT/UPDATE?
$sql = 'INSERT INTO table (colA, colB, colC, colD, colE) VALUES';
$insertQuery = array();
$insertData = array();
$n = 0;
// and loop through the array binding values from each row
// to the placeholders before execution
// placeholders names increment starting at 0 to array length
foreach ($rows as $row) {
$insertQuery[] = '(
:colA' . $n . ',
:colB' . $n . ',
:colC' . $n . ',
:colD' . …Run Code Online (Sandbox Code Playgroud) 我需要将几乎重复的行插入表中,同时更改一些值。
例如,插入具有新 id 的重复行(我不需要自动 id)和不同的名称,但所有其他值相同。问题是我需要做出选择 *
我知道有一种方法可以通过这种方式插入选择和更改值:
insert into Table1(id,name,surname) select newid(),'David',surname from Table1 where id=1
Run Code Online (Sandbox Code Playgroud)
但我不想登记所有字段,而是想使用 select *,所以如果添加了字段,我将不必更改我的存储过程。
我想要类似的东西:
insert into Table1 (
update (SELECT *
FROM Table1
WHERE id= 1 ) t
set t.id= newid(),name='David')
Run Code Online (Sandbox Code Playgroud)
有办法做到吗?
我想更改 MongoDB 文档中的字段名称(只是字段名称而不是值)。该文档如下所示(如下所示),并且在 user= Soham 的集合中只有一个文档:
{_id : ObjectId(xxxxxxxxxxxx),
user : "Soham",
age : 29
}
Run Code Online (Sandbox Code Playgroud)
现在我想将名为 'user' 的字段更改为 'name',而不是该字段的值。所以在 mongo shell 中我写了以下命令:
var soh = db.user.find({"user":"Soham"});
soh.name = soh.user;
delete soh.user;
db.user.update({"user":"Roshan"},soh);
Run Code Online (Sandbox Code Playgroud)
当我运行更新命令时,它抛出了我的错误。因为我是 MongoDB 的新手,所以不确定我哪里出错了。任何形式的帮助表示赞赏。
我想更新其中一个文档中的 _id 字段(如下所示)。
{
_id : ObjectId("586d9d5d23352af1a4aa05f7"),
name: "Soham",
age : 99,
city : "XYZ"
}
Run Code Online (Sandbox Code Playgroud)
所以我运行了以下步骤:
var doc = db.names.find({name:"Soham"});
doc._id = 111 ; -- 111 is not present in that collection for any document
db.names.remove({_id:ObjectId("586d9d5d23352af1a4aa05f7")});
db.names.insert(doc);
Run Code Online (Sandbox Code Playgroud)
前 3 行没有抛出任何错误,但是当我运行 insert 命令时,它抛出了错误。任何人都可以让我知道出了什么问题。
提前致谢!!!
我是 Open Edge Progress 数据库的初学者。
是否有任何查询来更新/插入数据到进度数据库表中
我的尝试是
ASSIGN
TABLE.COLUMN=DATA
END
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我有一个带有"编辑更新取消"命令字段的gridview.单击"编辑"时,特定行中的所有列都将变为可编辑状态.我只需要编辑2个特定列.这怎么可能?
(附加屏幕截图)

[在屏幕截图中所有3列都是可编辑的,我只需要第二列和第三列可编辑]
提前致谢.
我有3个简单的数组,具有相同数量的项目
$id= array(1, 2, 3, 4, 5);
$fruit= array('apple', 'banana', 'ananas', 'orange', 'lemon');
$price= array(32, 54, 26, 97, 47);
Run Code Online (Sandbox Code Playgroud)
我有两个MySql表.第一个表'fruits'包含行'id'和'name'以及第二个表'price',其中包含行'fruit'和'price'.
在表'fruits'中我需要从数组$ id和$ fruit中插入项目.来自$ id的项目应该进入行'id',而来自$ fruit的项目应该是上行到'name',如果没有一行具有相同的id号.此外,我需要将数组$ id和$ price中的所有项目插入表格'价格'.与上一个表格中的相同,数组$ id中的项目应放入"fruit"行中,而数组$ price中的项目应放入"price"行中.
谢谢你的帮忙.
这个条件:有一个表格在html和php haivng大约120个字段它为一个网站我提交这个表单提交到一个php页面,我首先使用$ _REQUEST []然后使用插入查询插入来检索所有值所有这些都在我的mysql数据库中的同一个表中的特定coloums中.现在我将不得不再次执行所有过程来更新这些值.因为插入查询和更新查询的语法完全不同.
我不想写另外100行代码.有没有办法使用我在插入查询中编写的代码来更新数据.
我使用DataStax Spark 连接器来填充 Cassandra 集群并处理不同作业中的数据(由于 Spark 不支持流处理的一些操作,例如双重聚合)。所以我想将不同作业的数据存储在同一个表中。假设第一个流作业在此表中插入一行(使用 foreach 编写器,因为连接器尚不支持流式写入)。
INSERT INTO keyspace_name.table_name (id, col1, col2) VALUES ("test", 1, null);
Run Code Online (Sandbox Code Playgroud)
如果我附加(更新插入)其中包含空列的数据集,而 Cassandra 中该行已经有非空值,该怎么办?
// One row of the dataset = "test", null, 2
dataset.write
.format("org.apache.spark.sql.cassandra")
.option("keyspace", keyspace)
.option("table", table)
.mode(SaveMode.Append)
.save()
Run Code Online (Sandbox Code Playgroud)
如果我正确理解文档,以前的非空值将被新的空值覆盖?如果是这样,有没有办法保留现有的非空值?或者我是否必须将每个作业的数据存储在单独的表中?
scala insert-update cassandra apache-spark spark-cassandra-connector
insert-update ×12
sql ×4
mysql ×3
insert ×2
mongodb ×2
php ×2
t-sql ×2
.net ×1
apache-spark ×1
arrays ×1
asp.net ×1
bulkinsert ×1
c# ×1
cassandra ×1
crud ×1
database ×1
document ×1
foreach ×1
gridview ×1
insert-query ×1
java ×1
openedge ×1
oracle ×1
pdo ×1
progress-4gl ×1
scala ×1
sql-update ×1