小编Joh*_*ohn的帖子

T-SQL:选择要通过连接删除的行

场景:

假设我有两个表,TableA和TableB.TableB的主键是单列(BId),是TableA中的外键列.

在我的情况下,我想删除TableA中与TableB中的特定行链接的所有行:我可以通过连接执行此操作吗?删除从连接中提取的所有行?

DELETE FROM TableA 
FROM
   TableA a
   INNER JOIN TableB b
      ON b.BId = a.BId
      AND [my filter condition]
Run Code Online (Sandbox Code Playgroud)

或者我被迫这样做:

DELETE FROM TableA
WHERE
   BId IN (SELECT BId FROM TableB WHERE [my filter condition])
Run Code Online (Sandbox Code Playgroud)

我问的原因是在我看来,在处理较大的表时,第一个选项会更有效.

谢谢!

t-sql join

486
推荐指数
5
解决办法
39万
查看次数

T-SQL:循环遍历已知值的数组

这是我的情景:

假设我有一个存储过程,我需要在一组特定的id上调用另一个存储过程; 有没有办法做到这一点?

即而不是需要这样做:

exec p_MyInnerProcedure 4
exec p_MyInnerProcedure 7
exec p_MyInnerProcedure 12
exec p_MyInnerProcedure 22
exec p_MyInnerProcedure 19
Run Code Online (Sandbox Code Playgroud)

做这样的事情:

*magic where I specify my list contains 4,7,12,22,19*

DECLARE my_cursor CURSOR FAST_FORWARD FOR
*magic select*

OPEN my_cursor 
FETCH NEXT FROM my_cursor INTO @MyId
WHILE @@FETCH_STATUS = 0
BEGIN

exec p_MyInnerProcedure @MyId

FETCH NEXT FROM my_cursor INTO @MyId
END
Run Code Online (Sandbox Code Playgroud)

我的主要目标是简单的可维护性(随着业务的变化,很容易删除/添加id),能够在一行中列出所有Id ...性能不应该是一个大问题

sql t-sql sql-server

80
推荐指数
5
解决办法
15万
查看次数

在ASP.NET MVC中设置默认的JSON序列化程序

我正在处理已部分转换为MVC的现有应用程序.每当控制器使用JSON ActionResult进行响应时,枚举将作为与字符串名称相对的数字发送.这听起来像默认的序列化程序应该是JSON.Net,它应该发送枚举,因为它们的名称与整数表示相反,但事实并非如此.

我是否缺少将其设置为默认序列化程序的web.config设置?或者是否有其他需要更改的设置?

c# asp.net-mvc json.net asp.net-mvc-4

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

使用makecert进行开发SSL

这是我的情况:

我正在尝试创建一个SSL证书,该证书将安装在所有开发人员的计算机上,以及两个内部服务器(一切都是非生产的).

如何创建可以安装在所有这些位置的证书,我需要做什么?

现在我使用Microsoft Visual Studio 8\SDK\v2.0\Bin中的makecert应用程序了解这些内容:

makecert -r -pe -n "CN=MySite.com Dev" -b 01/01/2000 -e 01/01/2033 -eku 1.3.6.1.5.5.7.3.1 -ss Root -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 mycert.cer
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何将此.cer文件放在其他计算机上,当我在本地计算机上安装IIS时,每次通过https:访问页面时,都会得到安全提示(即使在我之后)已经安装了证书.有没有人这样做过?

iis ssl makecert

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

T-SQL:根据MAX选择列(其他列)

我希望有一种简单的方法可以在不使用子查询的情况下执行此操作:

场景:您有"TableA",其中包含"Key","SubKey"和"Value"列.对于给定的"Key",我需要获得MAX("SubKey")的"Value".

因此,如果表包含行:

KEY SUBKEY VALUE
1   1      100
1   2      200
1   3      300
Run Code Online (Sandbox Code Playgroud)

对于Key = 1,我需要值300.我希望做到这样的事情:

SELECT
  VALUE
FROM
  TableA
WHERE
  Key = 1
HAVING
  SubKey = MAX(SubKey)
Run Code Online (Sandbox Code Playgroud)

但那是不行的.有没有办法在不执行'WHERE SubKey =(subselect for max subkey)'的情况下执行此操作?

sql t-sql sql-server greatest-n-per-group

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

Oracle"ORA-01008:并非所有变量绑定"错误w /参数

这是我第一次处理Oracle,我很难理解为什么我收到这个错误.

我在查询的where子句中使用Oracle的ODT.NET w/C#和以下代码:

WHERE table.Variable1 = :VarA
  AND (:VarB IS NULL OR table.Variable2 LIKE '%' || :VarB || '%')
  AND (:VarC IS NULL OR table.Variable3 LIKE :VarC || '%')
Run Code Online (Sandbox Code Playgroud)

我正在添加参数值,如下所示:

cmd.Parameters.Add("VarA", "24");
cmd.Parameters.Add("VarB", "test");
cmd.Parameters.Add("VarC", "1234");
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,服务器返回:

ORA-01008: not all variables bound 
Run Code Online (Sandbox Code Playgroud)

如果我注释掉'AND(....'行中的任何一行,则查询成功完成.

如果我只查询两个参数,而不是三个参数,为什么查询会正常运行?我收到的错误甚至没有意义

sql oracle plsql oracle10g

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

SQL 2008:关闭全文搜索查询的停用词

我找到一个很好的解决方案有点困难:

假设我有一个"公司"表,其中有一个名为"名称"的列.我在这个专栏上有一个全文目录.如果用户搜索"非常好的公司",我的查询将是:

SELECT
    *
FROM
    Company
WHERE
    CONTAINS(Name, '"Very" AND "Good" AND "Company"')
Run Code Online (Sandbox Code Playgroud)

问题在于此示例中,"非常"一词出现在标准的停用词列表中:

SELECT
    ssw.*
FROM
    sys.fulltext_system_stopwords ssw
WHERE
    ssw.language_id = 1033;
Run Code Online (Sandbox Code Playgroud)

导致返回没有行的查询,即使有一行名为"Very Good Company".

我的问题是,如何为我的查询关闭停用词?或者我将如何完全删除它们?

或者我是否应该采用另一种方式进行此搜索?

full-text-search stop-words sql-server-2008

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

Angular 2:让子路由组件替换路由器插座中的Parent

有没有办法在父路线中显示子路线<router-outlet>

例如,假设我们有两条路线:

/users/12345

/users/12345/orders/12345
Run Code Online (Sandbox Code Playgroud)

我还需要第二次是第一个孩子,但我也需要完全替代的内容/users/12345一致的内容/users/12345/orders/12345不是让/users/12345/orders/12345/users/12345router-outlet.

我以为我可以通过命名父级路由器来实现这一点,并且两条路由都以它为目标,但是从我一直在做的研究(以及它引起的错误)我感觉这些名称是用于二次使用时已经存在一个主路由器插座

angular

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

T-SQL存储过程执行'原子'吗?

假设我有一个看起来像这样的简单存储过程(注意:这只是一个例子,不是一个实际的过程):

CREATE PROCEDURE incrementCounter AS

DECLARE @current int
SET @current = (select CounterColumn from MyTable) + 1

UPDATE
    MyTable
SET
    CounterColumn = current
GO
Run Code Online (Sandbox Code Playgroud)

我们假设我有一个名为'myTable'的表,其中包含一行,'CounterColumn'包含我们当前的计数.

这个存储过程可以同时执行多次吗?

即这是可能的:

我称之为'incrementCounter'两次.调用A到达设置'当前'变量的位置(假设它是5).调用B到达设置"当前"变量(也将是5)的点.呼叫A完成执行,然后呼叫B结束.最后,该表应包含值6,但由于执行的重叠而包含5

t-sql stored-procedures sql-server-2005 sql-server-2008

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

八进制/十六进制符号来自哪里?

经过这么长时间,我从没想过要问这个问题; 我理解这来自c ++,但背后的原因是什么:

  • 像往常一样指定十进制数
  • 通过前导0指定八进制数
  • 通过前导0x指定十六进制数字

为何0?为什么是0x?基础-32有自然进展吗?

c hex octal

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