在MySQL中,如果指定ON DUPLICATE KEY UPDATE且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行的UPDATE.例如,如果列a声明为UNIQUE并包含值1,则以下两个语句具有相同的效果:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
Run Code Online (Sandbox Code Playgroud)
我不相信我在T-SQL中遇到过类似的东西.SQL Server是否提供了与MySQL的ON DUPLICATE KEY UPDATE相当的东西?
我想学习如何组合两个没有共同字段的数据库表.我已经检查了UNION,但是MSDN说:
以下是使用UNION组合两个查询的结果集的基本规则:
- 所有查询中列的数量和顺序必须相同.
- 数据类型必须兼容.
但我根本没有共同的领域.我想要的只是将它们组合在一个表中,就像一个视图.
所以我该怎么做 ?
提前致谢.
真诚.
我正在转换SQL Server中的一些数据:
INSERT INTO MYTABLE (AllowEdit)
(Select PreventEdit from SOURCETABLE)
Run Code Online (Sandbox Code Playgroud)
所以我需要从源表中反转位值.我期望NOT工作,因为这是我在代码中的方式,但事实并非如此.我能想到的最优雅的方式是:
INSERT INTO MYTABLE (AllowEdit)
(Select ABS(PreventEdit -1) from SOURCETABLE)
Run Code Online (Sandbox Code Playgroud)
有更标准的方法吗?
我试图通过ADO.net从DB获取输出值.有一个客户端代码:
using (var connection = new SqlConnection(ConnectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("pDoSomethingParamsRes", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@i", 1);
var outParam = new SqlParameter("@out", SqlDbType.VarChar);
outParam.Direction = ParameterDirection.Output;
command.Parameters.Add(outParam);
command.ExecuteNonQuery();
Console.WriteLine(command.Parameters["@out"].Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下异常:
the Size property has an invalid size of 0
Run Code Online (Sandbox Code Playgroud)
根据手册SqlParameter.Size属性我可能会省略大小.为什么我会得到这个例外?如何在不通过尺寸的情况下使其工作?
谢谢您的帮助!
我需要对SQL Server 2008数据库进行一些更改.
这需要创建一个新表,并在新表中插入一个引用已存在表的主键的外键.所以我想在我的新tblTwo之间建立一个关系,它引用了tblOne的主键.
但是,当我尝试这样做(通过SQL Server Management Studio)时,我收到以下错误:
表'tblOne'中的列与现有主键或UNIQUE约束不匹配
我不确定这意味着什么,我想知道它是否有任何解决方法?
查询以检查列是否可为空(列中是否允许空值).它应该优选返回yes/no或1/0或true/false.
我有一张包含大量数据的表格.我想添加额外的列id并将其用作主键.使用1 1到1的值填充此列的更好方法是什么row count
目前我正在使用游标并逐个更新行.这需要几个小时.有没有办法更快地做到这一点?
谢谢
我想将一个表脚本编写为Alter到一个新的查询编辑器窗口.但是此选项已禁用.我怎样才能做到这一点?
我在将输出参数从Sql Server存储过程返回到C#变量时遇到问题.我已经阅读了有关此内容的其他帖子,不仅在这里,而且在其他网站上,我无法让它工作.这是我现在拥有的.目前我只是想打印回来的价值.以下代码返回null值.我试图返回的是主键.我尝试过使用@@IDENTITY和SCOPE_INDENTITY()(即SET @NewId = SCOPE_IDENTITY()).
存储过程:
CREATE PROCEDURE usp_InsertContract
@ContractNumber varchar(7),
@NewId int OUTPUT
AS
BEGIN
INSERT into [dbo].[Contracts] (ContractNumber)
VALUES (@ContractNumber)
Select @NewId = Id From [dbo].[Contracts] where ContractNumber = @ContractNumber
END
Run Code Online (Sandbox Code Playgroud)
打开数据库:
pvConnectionString = "Server = Desktop-PC\\SQLEXPRESS; Database = PVDatabase; User ID = sa;
PASSWORD = *******; Trusted_Connection = True;";
try
{
pvConnection = new SqlConnection(pvConnectionString);
pvConnection.Open();
}
catch (Exception e)
{
databaseError = true;
}
Run Code Online (Sandbox Code Playgroud)
执行命令:
pvCommand = new SqlCommand("usp_InsertContract", pvConnection); …Run Code Online (Sandbox Code Playgroud) sql-server ×10
sql ×3
c# ×2
ado.net ×1
alter-table ×1
cursor ×1
foreign-keys ×1
mysql ×1
nullable ×1
primary-key ×1
ssms ×1
t-sql ×1
union ×1