假设有人来找你,并说我们将通过替换等于减少我们编写的SQL数量IN.单用标量值和数字列表都可以使用.
SELECT *
FROM table
WHERE id = 1
Run Code Online (Sandbox Code Playgroud)
要么
SELECT *
FROM table
WHERE id IN (1)
Run Code Online (Sandbox Code Playgroud)
这些语句是否等同于优化程序生成的语句?
从表面上看,这看起来非常简单,但由于两个原因导致简化:1.不需要复制大块SQL,以及2.我们不会过度使用动态SQL.
这是一个人为的例子,但请考虑以下内容.
select a.* from tablea a
join tableb b on a.id = b.id
join tablec c on b.id2 = c.id2
left join tabled d on c.id3 = c.id3
where d.type = 1
Run Code Online (Sandbox Code Playgroud)
......对于不止一个案例,也是如此
select a.* from tablea a
join tableb b on a.id = b.id
join tablec c on b.id2 = c.id2
left join tabled d on c.id3 …Run Code Online (Sandbox Code Playgroud) 我们如何转换integer to stringAngularJs,如parseInt()转换器string to int.我试过机智$parse,我认为这本身就是一种错误的做法.
这个触发器有问题.我希望它只将所请求的信息更新到有问题的行(我刚刚更新的那个)而不是整个表.
CREATE TRIGGER [dbo].[after_update]
ON [dbo].[MYTABLE]
AFTER UPDATE
AS
BEGIN
UPDATE MYTABLE
SET mytable.CHANGED_ON = GETDATE(),
CHANGED_BY=USER_NAME(USER_ID())
Run Code Online (Sandbox Code Playgroud)
如何告诉触发器这仅适用于相关行?
我编写了一个生成数据库备份文件名的脚本,备份数据库,然后将其还原为具有新数据库名称的副本.该名称基于某些日期/时间数据.
然后USE,我需要在脚本中使用该数据库,然后禁用所有触发器.
但是,这不起作用:
DECLARE @Use VARCHAR(50)
SET @Use = 'USE ' + @NewDatabaseName
EXEC(@Use)
Run Code Online (Sandbox Code Playgroud)
手动运行 - 数据库没有"使用".
如何USE用变量执行语句?
我也尝试了过程sp_executesql,结果相同.数据库没有改变.
DECLARE @sqlCommand nvarchar(1000)
SET @sqlCommand = 'USE ' + @NewDatabaseName
EXECUTE sp_executesql @sqlCommand
Run Code Online (Sandbox Code Playgroud)
看起来我可能需要进入sqlcmd模式?但是真的希望不要.
我有一个数据库服务器,上面有多个数据库。我想为这些数据库之一创建登录名,但是当用户登录到服务器时,我不希望显示服务器上的其他数据库。这可能吗?
我在服务器上创建了一个登录名,并在一台服务器上为该登录名授予了 db_readonly 角色。但是,当我通过 SQL Server Managment Studio 连接时,我会看到所有数据库的列表。我看不到每个表中定义了哪些表。
我想消除这种混乱,以便当用户连接时只有一个(如果包括主数据库则只有两个)可用数据库。
我有一个在SQL Server 2014表中呈现的二叉树:
UserID ParentUserID Position
----------------------------
1 Null Null <-- ROOT
2 1 Left
3 1 Right <-- Last Right for ID=1 (CTE query return 3)
4 2 Left
5 4 Left
6 5 Left
7 6 Left <-- Last Left for ID=1 (CTE query return 6)
Run Code Online (Sandbox Code Playgroud)
要获得最后一个id和最后一个id我正在使用CTE查询:
; with left_hand_recurse as
(
select UserID
, ParentUserID
, 1 as depth
from Table1 where ParentUserID is null
union all
select child.UserID
, child.ParentUserID
, parent.depth + 1
from left_hand_recurse …Run Code Online (Sandbox Code Playgroud) 我使用下面的查询来查找每个扇区的中位数
SELECT DISTINCT Sector,
PERCENTILE_DISC(0.5) WITHIN
GROUP (ORDER BY Value) OVER (PARTITION BY sector) AS Median
FROM TABLE
Run Code Online (Sandbox Code Playgroud)
该表格式如下
Sector Date Value
A 2014-08-01 1
B 2014-08-01 5
C 2014-08-01 7
A 2014-08-02 6
B 2014-08-02 5
C 2014-08-02 4
A 2014-08-03 3
B 2014-08-03 9
C 2014-08-03 6
A 2014-08-04 5
B 2014-08-04 8
C 2014-08-04 9
A 2014-08-05 5
B 2014-08-05 7
C 2014-08-05 2
Run Code Online (Sandbox Code Playgroud)
所以我得到了预期的结果如下
Sector Median
A 5
B 7
C 6
Run Code Online (Sandbox Code Playgroud)
现在我需要更改流程,以便计算中位数,同时仅考虑到给定日期的记录.所以新的结果将是
Sector Date Value …Run Code Online (Sandbox Code Playgroud) 我想知道如何创建我的表或选择一个插件,以确保我没有得到重复的值.
create table test.dbo.test
product,
time,
primary key(product, time)
go
Run Code Online (Sandbox Code Playgroud)
使用Clustered ColumnStore时,我不能有任何唯一约束来知道已插入的数据是唯一的.还有另一种检查方法吗?
HTML
<form method='POST' enctype='multipart/form-data' name="formName">
<div class="row">
<div class="col-md-6">
<input type="file" style="text-align: left" ng-model="value" class="btn"/>
</div>
<div class="col-md-2">
<input type="submit" value="upload" class="btn btn-info" ng-click="submitFile()"/>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
AngularJs
$scope.submitFile = function(){
document.formName.action = 'http://xxx.xxx.xxx.xxx:8000/ww/up?s=' + $rootScope.reply.Sid; //$rootScope.reply.Sid is secession id
document.formName.submit();
};
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用AngularJs进行文件上载.这个逻辑会起作用吗?我选择的路径也如下所示.
C:\fakepath\license.txt
Run Code Online (Sandbox Code Playgroud)
注意:我们的UI团队能够使用以下代码进行fileupload.我试图在AngularJs中获得同样的东西
<body>
<form method='POST' enctype='multipart/form-data' action="http://xxx.xxx.xx.xxx:xxxx/yyy/yyyyyyyyy?s=3e3646ea-48cc-4342-a388-e0c0d7bbf4e4"/'>
File to upload: <input type=file id='up_file' name=upfile><br>
</body>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在C#中调用存储过程.
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "updateData";
command.Parameters.Add(new SqlParameter("@inrego", rego));
command.Parameters.Add(new SqlParameter("@inOprt", oprt));
command.Parameters.Add(new SqlParameter("@inService", service));
connection.Open();
int update = command.ExecuteNonQuery();
Console.WriteLine(update);
connection.Close();
}
Run Code Online (Sandbox Code Playgroud)
更新在控制台上显示1,但数据库仍未更新.
这是存储过程
CREATE PROCEDURE [dbo].updateData
@inrego varchar(5),
@inOprt char(3),
@inService as varchar(50)
AS
delete from buses where rego = @inrego;
insert into buses (rego, operator,service) values(@inrego, @inOprt, @inService);
RETURN 0
Run Code Online (Sandbox Code Playgroud)
手动运行存储过程也可以
USE [C:\USERS\---\DOCUMENTS\VISUAL STUDIO 2013\PROJECTS\---\TEST.DB.MDF]
GO
DECLARE @return_value Int
EXEC @return_value = [dbo].[updateData]
@inrego …Run Code Online (Sandbox Code Playgroud)