tsql相关内容
我有一个包含一些持久数据的表.现在,当我查询它时,我还有一个非常复杂的 CTE,它计算结果所需的值,我需要将缺失的行插入到持久表中.最后,我想选择由 CTE 标识的所有行组成的结果,但如果它们已经在表中,则包含表中的数据,并且我需要是否刚刚插入行的信息. 简化后的工作方式如下(如果您想尝试,以下代码将作为普通查询运行): -- 设置测试数据,这将是持久化表DECLARE @target T
..
谁能在这个查询中找到我的错误?我正在使用 SQL Server 2000,我想将 CostEntry 表中的所有条目更新为 ActiveCostDetails 表中的相应值.where 子句确实适用于 select 语句. 更新 CostEntry CE内部加入 ActiveCostDetails 作为广告在 CostEntry.lUniqueID = ActiveCostDetails.Un
..
如何仅使用 TSQL(例如从 SSMS 而不使用 ADO.Net 或 Linq 等任何代码)更新 BLOB 字段? 解决方案 使用 TSQL 选择 BLOB 有两种方法: SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) 还有: SELECT BulkColumn FROM OPENROWSET (BUL
..
更新 dbo.TestStudents设置姓氏 =( 案件当(姓氏='AAA')然后'BBB'当(姓氏='CCC')然后'DDD'当(姓氏='EEE')然后'FFF'其他(姓氏)结尾 ) 该语句用于此目的,但 else 条件扫描表中的每条记录.有什么办法可以让未受影响的行保持原样? 解决方案 添加WHERE子句 更新 dbo.TestStudents设置姓氏 = 案例当姓氏 = 'AA
..
理想情况下我想这样做: UPDATE TOP (10) 消息 SET status=10 WHERE status=0 ORDER BY priority DESC; 英文:我想从数据库中获取前 10 条可用 (status=0) 消息并锁定它们 (status=10).优先级更高的消息应该首先得到. 不幸的是 MS SQL 不允许在更新中使用 order by 子句. 无论如何如
..
我想更新 SQL Server 中的前 100 条记录.我有一个表 T1 字段 F1 和 F2.T1 有 200 条记录.我想更新前 100 条记录中的 F1 字段.如何根据 SQL Server 中的 TOP 100 进行更新? 解决方案 注意,UPDATE语句需要括号: update top (100) table1 set field1 = 1
..
我正在寻找像这样的舍入值 2.3913 ->2.5 4.6667 ->4.5 2.11->2 如何在 SQL 中进行管理? 谢谢 解决方案 SELECT ROUND(2.2 * 2, 0)/2 带您到最近的 .5
..
我有用户、职位和许可证. 关系是: 用户可能拥有许多许可证 职位可能需要许多许可证 因此我可以轻松获得每个职位的许可要求以及每个用户的有效许可. 但我想知道匹配这两个集合的最佳方法是什么?按照逻辑,用户至少需要某个职位所需的那些许可证.可能有更多,但剩余的无关紧要. 我想获得用户和符合条件的职位的结果. PersonID PositionID1 1 ->用户 1
..
我正在为客户修改现有查询,但遇到了一个有点莫名其妙的问题. 我们的客户端使用 SQL Server 2008 R2,并且该数据库为用户提供了通过使用 EAV 结构为其其中一个表指定自定义字段的能力.此结构中存储的所有值都是 varchar(255),其中一些字段用于存储日期.正在修改有问题的查询以使用其中两个字段并将它们(一个是开始,另一个是结束)与当前日期进行比较,以确定哪一行是“当前".
..
我有一个连接超过 7 个表的复杂查询.加入后,我想过滤我的查询结果. 这是我观察到的. 当我执行 where 子句时 其中 X.Name != 'xxx'和 XY.Product != 1 我得到过滤结果,但 X.Name 和 XY.Product 的所有空值也消失了从我的结果.我想保留空值. 我也试过了: 和 X.Name != 'xxx'和 XY.Product !=
..
我正在 SQL Server 2008 R2 SP2 Express 数据库中设计表.我创建了带有 nvarchar 列的数据和 tinyint 列用于自动递增标识的表,假设行不会超过几行(这就是我选择 0-255 的原因tinyint).当我添加超过 255 行时,即使在我删除该表中的所有行并尝试添加一个新行之后,此错误也会永久发生.我正在使用 SQL Server Management Stu
..
我们在 SQL 服务器上有几个数据库.我们想创建 1 个可以看到数据库“c"但看不到其余数据库的新用户. 该用户应该只能从该数据库中进行选择,不能进行其他选择. 我一直在谷歌搜索和搜索一段时间,我发现最接近的是拒绝查看任何数据库,然后让他们成为数据库所有者. 但我认为这不会限制他们选择,除非我有办法拒绝除了数据库所有者的选择之外的所有内容? 提前感谢您的帮助! 编辑:顺便
..
此查询为我提供了在 SQL Server 上执行的命令的历史记录: 选择 *从(选择 deqs.last_execution_time AS [时间],dest.TEXT AS [查询]FROM sys.dm_exec_query_stats AS deqs交叉应用 sys.dm_exec_sql_text(deqs.sql_handle) 作为目标) X 当我添加 Where x.Query
..
我正在尝试执行 sql 查询并根据参数是否为空来动态构建 where 条件.我有这样的事情: SELECT tblOrder.ProdOrder, tblOrder.Customer FROM tblOrder@OrderId 不为空的情况然后哪里 tblOrder.OrderId = @OrderId别的结尾@OrderCustomer 不为空的情况然后和 tblOrder.OrderCust
..
我想找出两个日期列之间的持续时间.为此,我使用 DATEDIFF 函数分别查找数字年份和月份,但希望两个结果都在单列中.下面给出了这两列. start_dt |end_dt2009 年 10 月 6 日 2011 年 7 月 15 日 需要的结果 持续时间(年.月)2.3 解决方案 我认为没有开箱即用的 API 可以提供您提到的格式的结果.您需要使用 DATEDIFF 函数来获得所需的最
..
给定以下简单测试表: CREATE TABLE dbo.Test(ID BIGINT IDENTITY(1,1)NOT NULL,名称VARCHAR(50)NULL) 我想获得标识列的值成一个标量变量的 INSERT 使用输出子句后,但这并不工作: DECLARE @InsertedId BIGINT;INSERT INTO测试(名称)OUTPUT @ InsertedId = inser
..
我们有一个 SQL Server 2008 R2 数据库表,其中 XML 存储在 VARCHAR 数据类型的列中. 我现在必须获取 xml 的一些元素. 所以我想首先将存储为 VARCHAR 数据类型的 xml 转换为存储为 xml 数据类型的 xml. 例子: 表 A Id(int) , ProductXML (varchar(max)) 表 B Id(int),
..
我即将开始第一次使用几何或地理数据类型,因为我们的开发基线是 2008R2(!)我正在努力寻找如何存储一个圆圈的表示.我们目前有圆心的纬度和经度以及半径,例如:- [Lat] [float] NOT NULL,[长] [浮点] 非空,[半径] [十进制](9, 4) 非空, 有谁知道使用 STGeomFromText 方法存储它的等效方法,即使用哪种众所周知的文本 (WKT) 表示?我查看了圆
..
当我运行查询时,SQL Server 会缓存结果吗? 因为:当我运行以下查询时: 选择 id来自 FooWHERE Foo.Name LIKE '%bar%' 查询第一次运行 40 秒. 但在第二次运行时,只需要几秒钟. 这是因为以某种方式缓存了执行计划,还是实际上缓存了数据,以便我可以在第二次运行时更快地检索它? 解决方案 SQL Server 不会缓存查询结果,但
..
使用 CTE 的(通用表表达式)而不是使用 temp 表 有什么好处. 我在它们之间进行了性能测试,但我找不到它们之间的太大差异. 使用CTE'S有哪些优缺点? 解决方案 可能CTE和临时表最大的区别就是CTE的执行范围是single SELECT, INSERT、UPDATE、DELETE 或 CREATE VIEW 语句. 基本上你不能像使用临时表一样重用 CTE.
..