标签: t-sql

将行插入具有预定义标识的表中

我正在将数据从旧数据库传输到新数据库,并且在将数据库插入新数据库时需要保留旧数据库中的ID.但是,它不起作用.

这是我的查询:

SET IDENTITY_INSERT RentalEase.dbo.tblTenant ON
INSERT INTO RentalEase.dbo.tblTenant SELECT [ID]
    ,1
      ,[PropertyID]
    ,0
      ,[UnitID]
      ,[TenantName]
      ,[Sex]
      ,[BirthDate]
      ,[SSNO]
      ,[CoTenant1]
      ,[CoTenant1Sex]
      ,[CoTenant1BirthDate]
      ,[CoTenant1SSNO]
      ,[CoTenant2]
      ,[CoTenant2Sex]
      ,[CoTenant2BirthDate]
      ,[CoTenant2SSNO]
      ,[CoTenant3]
      ,[CoTenant3Sex]
      ,[CoTenant3BirthDate]
      ,[CoTenant3SSNO]
      ,[CarColor]
      ,[CarModel]
      ,[CarYear]
      ,[CarState]
      ,[CarPlateNumber]
      ,[Memo]
      ,[Address1]
      ,[Address2]
      ,[Address3]
      ,[Address4]
      ,[Phone]
      ,[ReferBy]
      ,[BeginDate]
      ,[NoticeGiven]
      ,[LeaseMonth2Month]
      ,[LeaseEnds]
      ,[DepositPaid]
      ,[DepositRefundable]
      ,[RefundMemo]
      ,[RentDueDay]
      ,[Charge1]
      ,[Charge1Amount]
      ,[Charge2]
      ,[Charge2Amount]
      ,[Charge3]
      ,[Charge3Amount]
      ,[Charge4]
      ,[Charge4Amount]
      ,[ContractText]
      ,[BalanceDue]
  FROM [oldTables].[dbo].[tblCurrentTenant]

  SET IDENTITY_INSERT RentalEase.dbo.tblTenant OFF
Run Code Online (Sandbox Code Playgroud)

SQL Server抱怨"只有在使用列列表并且IDENTITY_INSERT为ON时才能指定表RentalEase.dbo.tblTenant中的标识列的显式值".

我需要做些什么才能让它发挥作用?

sql t-sql sql-server

0
推荐指数
1
解决办法
627
查看次数

如何从字符串foo@mail.com中提取字符串'foo'?

select left(emailaddress, len(emailaddress) - charindex('@', emailaddress))
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

foo@ma
Run Code Online (Sandbox Code Playgroud)

请更正下面的选择声明.我需要使用电子邮件地址的音调来执行此操作并仅提取用户名.

sql t-sql sql-server sql-server-2005

0
推荐指数
1
解决办法
5100
查看次数

O/RM选择(不依赖于linq)

我喜欢使用SQL,我觉得我很好.

我尝试使用Linq(使用c#和Linq2Sql,看起来感觉它与VB.Net更像SQL),我觉得非常令人沮丧,你不能只运行你的查询而不编译和执行代码.我对IQueryable,IEnumarable,IList等不是很了不起.我怀疑为什么在你是一个专业的SQL用户时你会使用Linq.

但我需要某种O/RM,所以我可以编写我的测试代码,我喜欢使用POCO而不是数据集.

因此,考虑到我的团队中的每个人都是某种程度的SQL专家(主要是MS SQL,因此也是T-SQL),并且享受数据库编程,您建议使用O/RM.(商业或OpenSource无关紧要,良好的支持,教程和文档是必须的)

我们的开发环境将是C#,ASP.Net MVC以及ExtJS.

我们将要迁移的应用程序上有超过1000个表.您不会相信ADO.Net Entity Framework会在其上生成多少代码.我也尝试了一下Castle ActiveRecord,(我对H(N)Hibernate一无所知,并且没有足够的ActiveRecord文档让我继续前进)

.net t-sql sql-server orm

0
推荐指数
1
解决办法
433
查看次数

检查较大表中的数据与较小的表

我有2个表,一个有很多记录(表1),另一个表(表2)有相似的数据,但记录少得多.

我需要定期向较大的表中的记录添加一个标记,其中较小的表中有相应的记录.例如,这可以是电子邮件地址.

因此,如果较小的表(表2)中存在电子邮件地址,请在较大的表(表1)中标记

现在,我知道这有点模糊,但实际数据不相关,也不是表/列名.我正在寻找的是想法/建议,这是最有效的方法.

我运行的程序....

A)检查一个表中的记录,然后在另一个表中查找相应的记录?然后标记此记录是否匹配.哪种方式最好?

B)用临时表做点什么?

c)完全不同的东西?请指点.

我希望这是有道理的,我希望你能提供帮助.

谢谢!

sql t-sql sql-server stored-procedures sql-server-2005

0
推荐指数
1
解决办法
96
查看次数

SQL:什么是INSERT INTO #table?

我想知道#符号是什么意思?为什么要使用它?

例:

INSERT INTO #tmpContracts (sym, contractCount)
SELECT sym, 
       COUNT(DISTINCT(fulloptionsym)) AS contractCount
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server insert

0
推荐指数
2
解决办法
652
查看次数

将数据从同一个表的另外两列插入一列

我有下表:

Table A
FNAME | LNAME
james | Bond
John  | Brit
raje  | van
Run Code Online (Sandbox Code Playgroud)

我想从第一列插入带有完整姓氏的第一个字母,为表创建一个新的用户名列:

Table A
USERNAME
jbond
jbrit
rvan
Run Code Online (Sandbox Code Playgroud)

如果这不可能,我至少需要将lname的lastname更新为新创建的用户名列,并为所有行设置默认密码

sql t-sql sql-server

0
推荐指数
1
解决办法
7850
查看次数

有没有人知道重用身份价值的巧妙技巧?

通常,当您指定标识列时,您将在SQL Server中获得一个方便的接口,用于请求特定行.

SELECT * FROM $IDENTITY = @pID
Run Code Online (Sandbox Code Playgroud)

如果是标识列,您实际上并不需要关注自己的名称,因为只能有一个.

但是,如果我有一个主要由临时数据组成的表,该怎么办?大量插入和大量删除.有没有一种简单的方法可以重用身份值.

我希望能够编写一个函数,该函数将返回说NEXT_SMALLEST($IDENTITY)下一个标识值并以故障安全方式执行.

基本上找到未使用的最小值.这并不是一件容易的事,但我想要的是能够告诉SQL Server这是我的函数,它将生成身份值.但我所知道的是,没有这样的功能......

我想要...

实现全局数据库ID,我需要提供一个我可以控制的默认值.

我的想法是基于我应该能够拥有一个包含所有已知ID的表,然后来自其他需要全局ID的表的每一行ID都会引用该表.默认值将由类似的东西提供

INSERT INTO GlobalID
RETURN SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

0
推荐指数
1
解决办法
1712
查看次数

TABLE1 T1,TABLE2 T2 WHERE T1.Blah = T2.Blah - VS - INNER JOIN

如果表可以基本上是内连接的,因为where子句排除了所有不匹配的记录,所以使用以下2个查询语句语法样式中的第一个确切地说有多糟糕:

SELECT {COLUMN LIST}
FROM TABLE1 t1, TABLE2 t2, TABLE3 t3, TABLE4 t4 (etc)
WHERE t1.uid = t2.foreignid
AND t2.uid = t3.foreignid
AND t3.uid = t4.foreignid
etc
Run Code Online (Sandbox Code Playgroud)

代替

SELECT {COLUMN LIST}
FROM TABLE1 t1
INNER JOIN TABLE2 t2 ON t1.uid = t2.foreignid
INNER JOIN TABLE3 t3 ON t2.uid = t3.foreignid
INNER JOIN TABLE4 t4 ON t3.uid = t4.foreignid
Run Code Online (Sandbox Code Playgroud)

我不确定这是否仅限于微软SQL,甚至是特定版本,但我的理解是第一个场景执行完全外部联接以使所有可能的相关性都可访问.

我过去使用过第一种方法来优化查询,这些查询可以访问两个非常大的数据存储区,每个存储区都有外围表连接到它们,这些连接的产品在查询的后期汇集在一起​​.通过允许每个"较大"表连接到它们各自的查找表,并且只组合每个较大表的特定子集,我发现在特定过滤之前将大表引入彼此有显着的速度改进.

在正常(简单连接)情况下,使用第二种情况会不会更好?我发现它更容易阅读,看起来它会更快.

sql t-sql sql-server

0
推荐指数
1
解决办法
5234
查看次数

结合2个不同但非常相似的表格

我有2个相似但不相同的表,因此不可能使用联合.我需要结合表格,记住大约有40列,其中只有20列是共同的.关于最佳方法的任何想法?

Table1

ActivityCategory    ActivityType   Nationality   Language
---------------------------------------------------------
Communication       Telephone      French        French
Meeting             Session        British       English


Table2

ActivityCategory    ActivityType   Nationality   Employment
-----------------------------------------------------------
Communication       Fax            American      Employed


Combined Table

ActivityCategory    ActivityType   Nationality   Language   Employment
----------------------------------------------------------------------
Communication       Telephone      French        French
Meeting             Session        British       English
Communication       Fax            American                 Employed
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server union

0
推荐指数
1
解决办法
167
查看次数

连接表(没有子句)

我想加入表并获得以下输出

表格1

TestId1
----------
one
two
three
four
five
six
seven
eight
Run Code Online (Sandbox Code Playgroud)

表2

TestId2
----------
fiftythree
fiftyfour
fiftytwo
fiftyfive
fiftyone
Run Code Online (Sandbox Code Playgroud)

我希望Table3作为我的输出,包含table1中的所有行和table2中的第一行,直到没有剩下的行,然后它们应该开始重复.

作为替代答案,它们也可以随机分配.

TestId1        TestId2   
----------     ----------
one           fiftythree
two           fiftyfour 
three         fiftytwo  
four          fiftyfive 
five          fiftyone  
six           fiftythree
seven         fiftyfour 
eight         fiftytwo  
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005

0
推荐指数
1
解决办法
226
查看次数

标签 统计

sql-server ×10

t-sql ×10

sql ×9

sql-server-2005 ×3

.net ×1

insert ×1

orm ×1

stored-procedures ×1

union ×1