小编Jit*_*aji的帖子

sals语句与equals vs in

假设有人来找你,并说我们将通过替换等于减少我们编写的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)

sql t-sql sql-server

35
推荐指数
2
解决办法
2万
查看次数

我们如何在AngularJs中将整数转换为字符串

我们如何转换integer to stringAngularJs,如parseInt()转换器string to int.我试过机智$parse,我认为这本身就是一种错误的做法.

angularjs

17
推荐指数
1
解决办法
8万
查看次数

更新触发器后的SQL Server

这个触发器有问题.我希望它只将所请求的信息更新到有问题的行(我刚刚更新的那个)而不是整个表.

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)

如何告诉触发器这仅适用于相关行?

sql t-sql sql-server sql-server-express sql-server-2014

17
推荐指数
4
解决办法
17万
查看次数

EXEC使用数据库

我编写了一个生成数据库备份文件名的脚本,备份数据库,然后将其还原为具有新数据库名称的副本.该名称基于某些日期/时间数据.

然后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模式?但是真的希望不要.

sql t-sql sql-server sql-server-2008

9
推荐指数
1
解决办法
5068
查看次数

仅显示 SQL Server 上的一个数据库

我有一个数据库服务器,上面有多个数据库。我想为这些数据库之一创建登录名,但是当用户登录到服务器时,我不希望显示服务器上的其他数据库。这可能吗?

我在服务器上创建了一个登录名,并在一台服务器上为该登录名授予了 db_readonly 角色。但是,当我通过 SQL Server Managment Studio 连接时,我会看到所有数据库的列表。我看不到每个表中定义了哪些表。

我想消除这种混乱,以便当用户连接时只有一个(如果包括主数据库则只有两个)可用数据库。

sql t-sql sql-server azure-sql-database

7
推荐指数
1
解决办法
1万
查看次数

使用SQL进行二进制搜索查询

我有一个在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)

sql t-sql database sql-server common-table-expression

7
推荐指数
1
解决办法
2289
查看次数

在sql server中查找中位数到表中的每个日期

我使用下面的查询来查找每个扇区的中位数

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)

sql t-sql sql-server median

6
推荐指数
1
解决办法
193
查看次数

使用Clustered ColumnStore Index插入唯一值

我想知道如何创建我的表或选择一个插件,以确保我没有得到重复的值.

create table test.dbo.test
product, 
time,
primary key(product, time)
go
Run Code Online (Sandbox Code Playgroud)

使用Clustered ColumnStore时,我不能有任何唯一约束来知道已插入的数据是唯一的.还有另一种检查方法吗?

sql t-sql database sql-server duplicate-data

6
推荐指数
1
解决办法
653
查看次数

Angularjs文件上传

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)

file-upload angularjs

5
推荐指数
1
解决办法
1986
查看次数

存储过程无法使用c#代码

我正在尝试在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)

c# sql t-sql sql-server stored-procedures

5
推荐指数
1
解决办法
2540
查看次数