我有一个父表和子表,并希望创建一个select语句,给定父ID,返回该父项的行和每个子项的其他行.当存在一个或多个子节点时,执行左连接并不会为父提供一行.我知道这可以通过UNION完成,但我正在寻找一种不使用union语句的解决方案.这可能吗?
[父表]
ID Name
-------------
1 | Bob
Run Code Online (Sandbox Code Playgroud)
[儿童表]
ID ParentId Name
-----------------------
1 | 1 | Jim
2 | 1 | Ned
Run Code Online (Sandbox Code Playgroud)
查询结果我正在寻找:
Parent_Name Child_Name
---------------------------
Bob | NULL <- I need this null here
Bob | Jim
Bob | Ned
Run Code Online (Sandbox Code Playgroud) SQL不是我的强项之一.我有一个SQL Server 2008数据库.此数据库具有一个存储过程,该过程接收八个int参数.为了保持这个问题的重点,我将使用这些参数之一作为参考:
@isActive int
Run Code Online (Sandbox Code Playgroud)
这些int参数中的每一个都是-1,0或1. -1表示"未知"或"不关心".基本上,我需要查询一个表,如果int参数是非-1,我需要在我的WHERE子句中考虑它.因为有8个int参数,所以IF-ELSE语句似乎不是一个好主意.与此同时,我不知道怎么做呢?
如果参数不等于值,在SQL中是否有一种优雅的方式来添加WHERE条件?
谢谢!
是否有一种快速简便的方法来列出数据库中的每个索引最后更新其统计信息?首选答案是查询.此外,是否可以确定统计数据的"质量":FULLSCAN,SAMPLE n等.
编辑
这适用于我需要的东西,@OrbMan的一个小模块很棒的答案......
SELECT
STATS_DATE(i.object_id, i.index_id) AS LastStatisticsDate
,o.Name AS TableName
,i.name AS IndexName
FROM sys.objects o
INNER JOIN sys.indexes i ON o.object_id = i.object_id
WHERE o.is_ms_shipped=0
ORDER BY 1 DESC
Run Code Online (Sandbox Code Playgroud) 我知道SqlContext.WindowsIdentity返回正在执行命令的当前用户(在CLR触发器中),但是,这仅适用于经过Windows身份验证的用户.如果是sql server用户,我如何获得用户名?任何帮助表示赞赏.
我有几个文件,每个我需要导入SQL Server 2005的CSV数据大约5k.
这对于DTS来说过去很简单.我之前试过使用SSIS,它似乎是努力的10倍,我最终放弃了.
将csv数据导入sql server最简单的方法是什么?理想情况下,工具或方法也会创建表,因为其中有大约150个字段,这将简化操作.
有时使用此数据,可能需要手动修改1或2行,因为它们未正确导入.
我继承了第三方编写的前端.该前端通过不同第三方编写的程序与Oracle交互.有问题的存储过程需要2分36秒才能在手动执行时返回搜索结果.我看不到该过程,该团队建议我增加Web应用程序中的超时(托管在共享服务器上).
在我的世界中,超过30秒的任何事情都需要在部署到生产之前进行性能修复,只有少数例外(遗留代码,疯狂报告等).建议给我的选项是将超时从30秒(由前端开发人员明确添加)增加到180秒.
我向您提出的问题: 采用简单方法和增加超时有什么风险?如果可能,请提供支持您观点的文章的链接,以便我可以参考.
如果你认为这是一个非问题,也可以随意加入.
据我所知,我可以使用以下sp更改sql表:
EXEC sp_rename 'customers', 'custs'
Run Code Online (Sandbox Code Playgroud)
我如何附加这个以便新表的今天的日期作为后缀?
我尝试了以下主题的变化,但收效甚微!
EXEC sp_rename 'customers', 'customers +(CONVERT(VARCHAR(8),GETDATE(),3))'
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢.
EXEC [dbo].[pr_cfgAddFact]
@SettingName = 'TransferBatch',
@RoleFK = SELECT TOP 1 rolepk FROM cfgRole WHERE cfgRole.Name = 'SuperAdmin'
Run Code Online (Sandbox Code Playgroud)
为什么SQL会在这里抱怨SELECT子句?我试图用子查询获取数据运行proc.
如何为SUM列分配列名?
即
select OwnerUserId, SUM(PostScore)
INTO Experts
from ...
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
对象或列名称缺失或为空.对于SELECT INTO语句,请验证每列是否具有名称.对于其他语句,请查找空别名.不允许使用定义为""或[]的别名.将别名更改为有效名称.
我猜因为包含SUM结果的列没有名称.
我想知道在tsql(CTE)中是否存在递归更新
ID parentID value
-- -------- -----
1 NULL 0
2 1 0
3 2 0
4 3 0
5 4 0
6 5 0
Run Code Online (Sandbox Code Playgroud)
我可以value使用例如从ID = 6的CTE到最顶行来递归地更新列吗?
sql-server ×8
t-sql ×4
sql ×2
csv ×1
etl ×1
exec ×1
import ×1
indexing ×1
maintenance ×1
oracle ×1
parent-child ×1
performance ×1
recursion ×1
sqlclr ×1
subquery ×1
union ×1