我怎么能unique row id不unique row id存在?
我的桌子是
col1 col2 col3 col4 col5 col6 col7
john 1 1 1 1 1 1
john 1 1 1 1 1 1
sally 2 2 2 2 2 2
sally 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)
我希望在重复删除后留下以下内容:
john 1 1 1 1 1 1
sally 2 2 2 2 2 2
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些查询,但我认为它们依赖于行ID,因为我没有得到理想的结果.例如:
DELETE
FROM table
WHERE col1 IN (
SELECT id
FROM table
GROUP BY id
HAVING (COUNT(col1) > 1)
)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种有效的方法将行转换为SQL服务器中的列,我听说PIVOT不是很快,我需要处理大量的记录.
这是我的例子:
-------------------------------
| Id | Value | ColumnName |
-------------------------------
| 1 | John | FirstName |
| 2 | 2.4 | Amount |
| 3 | ZH1E4A | PostalCode |
| 4 | Fork | LastName |
| 5 | 857685 | AccountNumber |
-------------------------------
Run Code Online (Sandbox Code Playgroud)
这是我的结果:
---------------------------------------------------------------------
| FirstName |Amount| PostalCode | LastName | AccountNumber |
---------------------------------------------------------------------
| John | 2.4 | ZH1E4A | Fork | 857685 |
---------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我该如何建立结果?
这在SQL Server 2008中不起作用:
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Run Code Online (Sandbox Code Playgroud)
错误是:
关键字"SET"附近的语法不正确.
我究竟做错了什么?
我有这个错误消息:
Msg 8134,Level 16,State 1,Line 1遇到零误差.
编写SQL代码的最佳方法是什么,以便我再也不会看到此错误消息?
我可以做以下任何一种情况:
要么
是使用NULLIF条款的最佳方式吗?
有没有更好的方法,或者如何实施?
我正在尝试将列从a更改varchar(50)为a nvarchar(200).什么是更改此表的SQL命令?
t-sql sql-server alter-table type-conversion sql-server-2008
SQL Server Management Studio 2005(或更高版本)中是否有一种方法可以更改Windows身份验证用户(就像在SQL Server 2000及更早版本中一样)?
这是常规连接属性对话框(请注意选择Windows Auth时灰色的UID/PWD):

仅供参考 - 一种解决方法是使用,runas但我正在寻找一种解决方案,允许我跨多个服务器(以及跨多个域)使用多个Windows帐户.
我需要在SQL Server 2008中搜索包含数据库字段名称或变量名称的存储过程.
我只需要选择给定日期时间变量的月份的第一天.
我知道使用这种代码很容易:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)
但这不是很优雅,也可能不是很快.
有一个更好的方法吗?我正在使用SQL Server 2008.
我正在使用实体框架,偶尔我会得到这个错误.
EntityCommandExecutionException
{"There is already an open DataReader associated with this Command which must be closed first."}
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands...
Run Code Online (Sandbox Code Playgroud)
即使我没有做任何手动连接管理.
这个错误间歇性地发生.
触发错误的代码(为了便于阅读而缩短):
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
Run Code Online (Sandbox Code Playgroud)
使用Dispose模式以便每次都打开新连接.
using (_tEntitites = new TEntities(GetEntityConnection())) {
if (critera.FromDate > x) {
t= _tEntitites.T.Where(predicate).ToList();
}
else {
t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
}
}
Run Code Online (Sandbox Code Playgroud)
仍有问题
如果连接已经打开,EF为什么不重用连接?
我试图在INSERT声明后得到一个键值.示例:我有一个包含属性name和id的表.id是生成的值.
INSERT INTO table (name) VALUES('bob');
Run Code Online (Sandbox Code Playgroud)
现在我想在同一步骤中恢复身份.这是怎么做到的?
我们正在使用Microsoft SQL Server 2008.
sql-server-2008 ×10
sql-server ×7
sql ×6
t-sql ×4
alter-table ×1
datetime ×1
duplicates ×1
linq ×1
mysql ×1
pivot ×1
sql-delete ×1