Tag: sql server

创build和填充数字表格的最佳方法是什么?

我见过很多不同的方式来创build和填充数字表。 但是,创build和填充它的最佳方式是什么? “最好的”被定义为从最重要的到最不重要的: 使用最佳索引创build表 行生成速度最快 用于创build和填充的简单代码 如果您不知道数字表是什么,请看这里: 为什么我应该考虑使用辅助数字表?

SQL根据ID匹配从一个表更新到另一个表

我有一个数据库帐号和卡号。 我将这些匹配到一个文件来更新任何卡号到帐号,所以我只使用帐号。 我创build了一个链接表和账户/卡数据库的视图来返回表ID和相关的账号,现在我需要更新那些账号与账号相匹配的logging。 这是Sales_Import表,需要更新帐号字段: LeadID AccountNumber 147 5807811235 150 5807811326 185 7006100100007267039 这是RetrieveAccountNumber表,我需要从哪里更新: LeadID AccountNumber 147 7006100100007266957 150 7006100100007267039 我尝试了下面,但到目前为止没有运气: UPDATE [Sales_Lead].[dbo].[Sales_Import] SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber FROM RetrieveAccountNumber WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID = RetrieveAccountNumber.LeadID) 它将卡号更新为帐号,但帐号被NULLreplace

NOT IN子句和NULL值

这个问题出现时,我得到不同的logging计数为我认为是相同的查询一个使用not in where约束和另一个left join 。 not in约束中的表有一个空值(坏数据),导致查询返回0logging的计数。 我有点理解为什么,但我可以用一些帮助完全理解这个概念。 为了简单说明,为什么查询A返回一个结果,但是B不是? A: select 'true' where 3 in (1, 2, 3, null) B: select 'true' where 3 not in (1, 2, null) 这是在SQL Server 2005上。我还发现, set ansi_nulls off会导致B返回一个结果。

将标识添加到现有列

我需要将表的主键更改为标识列,表中已经有许多行。 我有一个脚本来清理ID,以确保它们从1开始连续,在我的testing数据库上正常工作。 什么是SQL命令来改变列有一个身份属性?

使用merge..output获取source.id和target.id之间的映射

非常简单,我有两个表来源和目标。 declare @Source table (SourceID int identity(1,2), SourceName varchar(50)) declare @Target table (TargetID int identity(2,2), TargetName varchar(50)) insert into @Source values ('Row 1'), ('Row 2') 我想将所有行从@Source移动到@Target并知道每个SourceID的TargetID ,因为还有需要复制的表SourceChild和TargetChild ,我需要将新的TargetID添加到TargetChild.TargetID FK列。 这有几个解决scheme。 使用while循环或游标一次向目标插入一行(RBAR),并使用scope_identity()填充TargetChild的FK。 将一个临时列添加到@Target并插入SourceID 。 然后您可以join该列以获取TargetID中的FK的TargetChild 。 为@Target SET IDENTITY_INSERT OFF ,并@Target处理分配新值。 你得到一个范围,然后你在TargetChild.TargetID使用。 我并不都喜欢他们中的任何一个。 我到目前为止使用的是游标。 我真正想做的是使用insert语句的output子句。 insert into @Target(TargetName) output inserted.TargetID, S.SourceID select SourceName from @Source as […]

如何在sql server中使用group_concat进行查询

我知道,在SQL Server中,我们不能使用Group_concat函数,但这里有一个问题,我有我需要Group_Concat我的query.I谷歌它发现了一些逻辑,但无法纠正它。我的SQL查询是 select m.maskid,m.maskname,m.schoolid,s.schoolname, md.maskdetail from tblmask m join school s on s.id = m.schoolid join maskdetails md on m.maskid = md.maskid order by m.maskname ; 它给了我像结果一样 只看前面3行在这个maskid中,maskname,schoolid,schoolname是一样的,但是maskdetail是不同的,所以想要一行的最后一列可以包含所有的maskdetails作为每个maskid等等。 我想要我的输出 等等。所以请在帮助我的同时查询。 提前致谢。

SQL Server中的左连接与左连接外连接

LEFT JOIN和LEFT OUTER JOIN什么区别?

ExecuteReader需要一个开放和可用的连接。 连接的当前状态是正在连接

当尝试通过ASP.NET在线连接到MSSQL数据库时,当两个或更多人同时连接时,我将得到以下内容: ExecuteReader需要一个开放和可用的连接。 连接的当前状态是正在连接。 该网站在我的本地主机服务器上正常工作。 这是粗略的代码。 public Promotion retrievePromotion() { int promotionID = 0; string promotionTitle = ""; string promotionUrl = ""; Promotion promotion = null; SqlOpenConnection(); SqlCommand sql = SqlCommandConnection(); sql.CommandText = "SELECT TOP 1 PromotionID, PromotionTitle, PromotionURL FROM Promotion"; SqlDataReader dr = sql.ExecuteReader(); while (dr.Read()) { promotionID = DB2int(dr["PromotionID"]); promotionTitle = DB2string(dr["PromotionTitle"]); promotionUrl = […]

我怎样才能做一个SQL语句与JOIN UPDATE语句?

我需要使用“父”表中的数据更新SQL Server 2005中的这个表,如下所示: 拍卖 id (int) udid (int) assid (int) UD id (int) assid (int) sale.assid包含更新ud.assid的正确值。 什么查询会做到这一点? 我正在考虑join,但我不确定是否有可能。

获取插入行身份的最佳方法?

什么是插入行的身份的最佳方式? 我知道@@IDENTITY和IDENT_CURRENT和SCOPE_IDENTITY但不明白每个附带的优点和缺点。 有人可以解释一下这些差异,什么时候我应该使用它们?