我的查询如下,其中包含一个子查询: select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID, COUNT(DISTINCT dNum) AS ud FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY ud DESC) 我收到的错误是… Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.` […]
我在本地机器上创build了一个数据库,然后做了一个叫tables.bak的DataLabTables的备份。 我将该备份移动到没有该表的远程计算机,并试图进行恢复,但得到以下错误: System.Data.SqlClient.SqlError:在“c:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables”上尝试“RestoreContainer :: ValidateTargetForCreation”时,操作系统返回错误“5(Access is denied。密度纤维板”。 如果这是问题,我该如何解决我的权利?
有人可以给我一些关于何时使用WITH (NOLOCK) ,而不是SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 每个的优点/缺点是什么? 你有没有意外的后果使用一个而不是另一个?
在select语句中作为字段值使用时,是否可以表示1或0? 例如 在这种情况下,语句(它是select语句的一部分)ICourseBased是inttypes的。 case when FC.CourseId is not null then 1 else 0 end as IsCoursedBased 为了让它有点types,我必须投这两个值。 case when FC.CourseId is not null then cast(1 as bit) else cast(0 as bit) end as IsCoursedBased 有没有一种简单的方式来expression值的位types,而不必每次都投? (我正在使用MS SQL Server 2005)
我正在实施下面的模型来存储用户相关的数据在我的表 – 我有2列 – uid (主键)和一个meta数据列存储关于用户的JSON格式的其他数据。 uid | meta ————————————————– 1 | {name:['foo'], | emailid:['foo@bar.com','bar@foo.com']} ————————————————– 2 | {name:['sann'], | emailid:['sann@bar.com','sann@foo.com']} ————————————————– 这是一种更好的方法(性能明智,devise明智)比每列属性模型,其中表中将有许多列像uid , name , emailid 。 我喜欢的第一种模式是,你可以添加尽可能多的字段,没有限制。 另外,我想知道,现在我已经实现了第一个模型。 我如何对其执行查询,比如,我想获取所有像“foo”这样的名字的用户? 问题 – 在数据库中使用JSON或者按字段存储用户相关数据的更好方法(记住字段数量不固定)? 另外,如果实现了第一个模型,如何查询数据库如上所述? 我是否应该使用这两个模型,将所有可能通过查询search到的数据存储在单独的行中,并将其他数据存储在JSON中(是不同的行)? 更新 由于不会有太多的列需要执行search,使用这两个模型是明智的吗? 我需要search的数据的按键列和其他人的JSON(在同一个MySQL数据库中)?
我想用尽可能less的(大小/性能)成本将用户性别存储在数据库中。 到目前为止,有三种情况出现 与代码中的Enumalignment(1 =男,2 =女,3 =希望不需要这个)? char(1) – 存储m或f 位 (布尔) – 并调用列isMale(抱歉女士:P)? 没有与选项3打交道的性别歧视行为 🙂 我问的原因是因为这个答案提到字符 比布尔值 小 。 编辑 我应该澄清,我正在使用MS SQL 2008,它实际上有位数据types。 编辑#2 围绕2个以上性别的几个有趣的答案,并使用isMale列。 我希望我不会因为写这个而被标记,但是在我们现在的(现代)社会中,我猜布尔(性别)列的最合适的名字是hasPenis 。 编辑#3 原来这个问题是相当主观的,因为人们在下面的答案中提出了所有3个选项。 我会让社区注意他们认为是最好的解决scheme,因为我不知道接受哪个答案。 编辑#4 我开始倾向于@OMG小马的回答 ,主要是因为他有更高的代表和sql-server标签的金徽章 – 看起来他知道他在说什么。 来吧人, 投票 ! 🙂
我用SQL Server Management Studio创build了一个数据库,现在我想在我的C#应用程序中使用它。 我需要连接string? 我在哪里可以find连接string,我的数据库存储在哪里? 我是否必须发布它或类似的东西,还是在我的文档在某个地方? using (var conn = new SqlConnection("your connection string to the database")) 我如何获得连接string ? 我在哪里可以find连接string复制粘贴到上面的部分? 如何发布我的数据库,以便Visual Studio可以检索它? 然后我可以拉那里的连接string?
如何删除T-SQLstring的最后一个字符? 例如: 'TEST STRING' 回来: 'TEST STRIN'
在这个出色的SO问题中 ,讨论了CTE和子查询之间的差异。 我想具体问一下:以下哪种情况下更有效/更快? CTE 子查询 临时表 表variables 传统上,我在开发存储过程中使用了很多临时表 – 因为它们看起来比许多交织在一起的子查询更具可读性。 非recursionCTE非常好地封装了一组数据,并且非常可读,但是在某些特定情况下,可以说它们总是会performance得更好? 还是不得不总是摆弄不同的select来find最有效的解决scheme? 编辑 我最近被告知,在效率方面,临时表是一个很好的首选,因为他们有一个相关的直方图,即统计。
有没有一些标准的方法来命名SQL Server的索引? 似乎主键索引被命名为PK_,而非聚簇索引通常以IX_开头。 除了唯一索引之外,是否有任何命名约定?