我有一张桌子汽车和CarDescriptions
汽车:IDCar(int,PK,autoincrement)carsDesciptions(IDDescription,Header(nvarchar),Content(nvarchar),idCar(int,FK)
在应用程序中,我正在添加汽车并编辑现有汽车.
我的问题:
1.如何保存更改的汽车与数据库中的描述?
我有车的ID,我有ID的描述
类CarDescirption没有像IsChanged这样的任何池,所以
我不想做这样的事情:
如果在表中,则必须更新记录,如果表中不存在则必须插入
我的查询:
UDPATE message_recipients SET
recipient_status = 2 WHERE mid = 3 AND
recipient_id = 4
Run Code Online (Sandbox Code Playgroud)
表字段:
id,mid,recipient_status,recipient_id
错误:
1064 - 您的SQL语法出错; 查看与您的MySQL服务器版本对应的手册,以便在'UDPATE message_recipients SET recipient_status = 2 WHERE mid = 3 AND recipient_i'附近使用正确的语法
有人可以给我任何建议吗?
我是PostgreSQL优化的新手,并且选择适当的工作,不管是什么.因此,我想知道每当我尝试使用PostgreSQL进行不适当的工作时,或者它适合它,我应该正确设置一切.
无论如何,我需要一个包含大量经常变化的数据的数据库.
例如,想象一个ISP,拥有大量客户端,每个客户端都有一个会话(PPP/VPN /无论如何),有两个自我描述的经常更新的属性bytes_received和bytes_sent.有一个表格,每个会话由一个具有唯一ID的行表示:
CREATE TABLE sessions(
id BIGSERIAL NOT NULL,
username CHARACTER VARYING(32) NOT NULL,
some_connection_data BYTEA NOT NULL,
bytes_received BIGINT NOT NULL,
bytes_sent BIGINT NOT NULL,
CONSTRAINT sessions_pkey PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)
并且随着会计数据的流动,此表会收到许多UPDATE,如下所示:
-- There are *lots* of such queries!
UPDATE sessions SET bytes_received = bytes_received + 53554,
bytes_sent = bytes_sent + 30676
WHERE id = 42
Run Code Online (Sandbox Code Playgroud)
当我们收到一个永无止境的流,有很多(比如每秒1-2次)更新一个有很多(如几千个)会话的表,可能要归功于MVCC,这使得PostgreSQL 非常繁忙.有没有办法加速一切,或者Postgres不完全适合这个任务,我最好认为它不适合这个工作,把这些计数器放到另一个存储器,如memcachedb,使用Postgres仅用于相当静态的数据?但我会错过不经常查询这些数据的能力,例如找到TOP10下载器,这不是很好.
不幸的是,数据量不能降低太多.ISP会计示例全部用于简化说明.真正的问题在于另一个系统,这种结构在某种程度上难以解释.
谢谢你的建议!
我正在尝试创建一个小的测试应用程序,它读取FileStream的块并将其附加到SQL Server 2005 Express上的VarBinary(max)列.
一切正常 - 列应该按照它应该填充,但我的机器似乎仍然将所有内容缓冲到内存中,我只是看不清楚原因.
我正在使用以下代码(C#):
using (IDbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[1].ConnectionString))
{
connection.Open();
string id = Guid.NewGuid().ToString();
using (IDbCommand command = connection.CreateCommand())
{
command.CommandText = "INSERT INTO [BLOB] ([Id],[Data]) VALUES (@p1,0x0)";
SqlParameter param = new SqlParameter("@p1", SqlDbType.VarChar);
param.Value = id;
command.Parameters.Add(param);
command.ExecuteNonQuery();
}
if (File.Exists(textBox1.Text))
{
using (IDbCommand command = connection.CreateCommand())
{
command.CommandText = "UPDATE [BLOB] SET [Data].WRITE(@data, @offset, @len) WHERE [Id]=@id";
SqlParameter dataParam = new SqlParameter("@data", SqlDbType.VarBinary);
command.Parameters.Add(dataParam);
SqlParameter offsetParam = new SqlParameter("@offset", SqlDbType.BigInt);
command.Parameters.Add(offsetParam);
SqlParameter …Run Code Online (Sandbox Code Playgroud) 晚上好,
实际上,现在是夜晚.晚上11点左右.我的大脑正在关闭,我需要一些帮助,所以我可以完成并回家:)
我有两张桌子 - 桌子a和桌子b.当另外两个字段匹配时,我需要使用表b中字段的值更新表a中的字段.表格没有每条记录的唯一ID :(
基本上,我想这样做:
update a
set importantField =
(select b.importantfield
from b
where a.matchfield = b.matchfield
and a.matchfield2 = b.matchfield2
)
where a.matchfield = b.matchfield
and a.matchfield2 = b.matchfield2
Run Code Online (Sandbox Code Playgroud)
或者至少......我认为这就是我想做的......
有人可以帮帮我吗?
我在我的MySQL数据库'用户'中得到了这个表.它有字段'id'和'value'.
现在,我想更新大量在这个表中有行单个 SQL查询,但许多行应该得到不同的值.目前,我正在使用这个:
UPDATE users
SET value = CASE id
WHEN 1 THEN 53
WHEN 2 THEN 65
WHEN 3 THEN 47
WHEN 4 THEN 53
WHEN 5 THEN 47
END
WHERE id IN (1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)
这有效.但我觉得我可以做一些优化,因为我只分配了3到4个不同的值.正如您所看到的,现在这些是47,53和65.有没有办法可以在同一个查询中同时更新同时获得相同值的所有行?或者,还有另一种方法可以优化吗?
我们有一个包含大量宽表(每个40-80列)的数据库,并且发现了一个将NULL值引入大约500条记录的错误.NULL值可以出现在任何列中(都是整数列,请参见下图)但这些NULL值导致我们的报告系统之一无法轻易更改.我们需要用特定的静态值(在本例中为99)替换NULL值,但由于这个更改必须基于每列超过250个不同的列,我宁愿不编写更新每个列的单个TSQL脚本一个人.
我的大脑现在太过于思考一个聪明的解决方案,所以我的问题是如何使用简单易读的SQL查询在表(或更好的多个表)上的所有列上执行此任务.我可以使用WHERE (Answer_1 IS NULL) OR (Answer_2 IS NULL) OR ...每个表的链或甚至每个表的AdministrationID号来容易地隔离记录,但是当更新为where子句是每行而不是每列时,这个技巧将不起作用.有什么建议?
以下是一个示例查询,显示了来自4个不同表的一些记录:

我有这样一张桌子:
SKU Size
A 10
B 10
C 10
D 10
E 10
F 10
G 10
Run Code Online (Sandbox Code Playgroud)
我想将其更改为:
SKU Size
A 20
B 10
C 30
D 10
E 80
F 10
G 60
Run Code Online (Sandbox Code Playgroud)
我有超过3000行记录要更新.如何使用SQL更新命令执行此操作?
我尝试使用下面的Groovy脚本连接到Oracle SQL数据库:
def connectDB(String dataFile){
//Load driver class for your specific database type
Class.forName("oracle.jdbc.driver.OracleDriver")
String connectionString = "jdbc:sqlite:" + dataFile
if(connection != null && !connection.isClosed()){
connection.close()
}
connection = DriverManager.getConnection(connectionString)
return connection
}
Run Code Online (Sandbox Code Playgroud)
连接字符串中有sqlite,但不确定我应该使用哪个值.(我也试过jdbc:oracle了.)
我使用以下类来建立数据库连接.
public class sqlconnect {
private static Connection connection = null;
/**
* Open and return a connection to database
* @param dataFile absolute file path
* @return an instance of java.sql.Connection
*/
@Keyword
def connectDB(String dataFile){
//Load driver class for your …Run Code Online (Sandbox Code Playgroud) sql ×9
sql-update ×9
c# ×2
mysql ×2
sql-server ×2
t-sql ×2
groovy ×1
jdbc ×1
optimization ×1
oracle ×1
postgresql ×1
varbinary ×1