我需要在包含 3 列的表中添加一列:
这 3 列永远不会改变。它就像一个“日志”表,只能添加行,不能删除或更改行
我需要的第四列(计算列)是一个标志列,它将显示状态是否是基于 insert_date 的最后一次状态更改。
如果是最后一个状态,则显示 1,否则显示 0。我希望我解释得足够好。下面是一个例子:
当我想将表 A 的列的值限制为仅从表 B 的相关列中的一组可选值中获取时,我遇到了麻烦。
问题是表 B 的相关列不是外键。如果我这样做,我想我可以为不同的列值多次使用相同值的正确状态将是不可能的 - 这不是我寻找的行为。
那么可以做什么呢?
我试图减少我们应用程序数据库上的巨大性能问题。我们使用 SQL Server 2014,我们有很多视图。
我想知道重写左连接以在预测中使用存在是否有重大影响?
我的问题是:在构建根据相关匹配项的存在投射不同数据的查询时,是否有任何有关性能的最佳实践?
我的意思是,这些查询中的哪一个可以被认为更好?
1):
select
a.Id,
case when b.Id is not null
then convert(bit,1)
else convert(bit,0)
end IsActive
from A a
left join B b on a.Id = b.Id;
Run Code Online (Sandbox Code Playgroud)
2):
select
a.Id,
iif(exists(select top 1 1 from B where Id = a.Id),
convert(bit,1),
convert(bit,0)
) IsActive
from A a;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您对查询的形式有任何意见或一般性建议,请随时发表评论。
我需要在一张表中包含 2 个标识列。一个是正常身份,另一个将每年重置。
我DBCC CHECKIDENT ('TestTable', RESEED, 0)在插入程序的帮助下完成了重置部分。
但除了这个,我不知道如何拥有一个正常的身份。解决方案可能使用两个表,但我更喜欢将它们都放在一个表中。
我有一个零件表:
ID, Description
ABC-123 ABC
DEF-456 DEF
Run Code Online (Sandbox Code Playgroud)
我有一个用户定义的字段表,将信息存储在一行中。
ID, DOCUMENTID, STRING_VAL, DATE_VAL
UDF-000021, ABC-123, TEXT123, NULL
UDF-000022, ABC-123, NULL, 6/10/2016
UDF-000023, ABC-123, JOHN WORKING ON IT, NULL
UDF-000024, ABC-123, NULL, 7/1/2016
UDF-000025, ABC-123, YES, NULL
UDF-000021, DEF-456, TEXT123, NULL
UDF-000022, DEF-456, NULL, 6/10/2016
Run Code Online (Sandbox Code Playgroud)
我需要信息看起来像这样:
PART ID DESCRIPTION REVISION REVISION DATE NOTES MARKUP DATE IM
-------------------------------------------------------------------------------
ABC-123 ABC TEXT123 6/10/2016 JOHN 7/1/2016 YES
DEF0456 DEF TEXT123 6/10/2016
Run Code Online (Sandbox Code Playgroud)
我看过连接、枢轴等,我想我似乎无法理解它。任何帮助是极大的赞赏。
对于我的 Django 应用程序,我必须将时区设置为 UTC,但是我无法设置它,因为我在系统数据库中找不到任何与时区相关的表。
我怎么得到那些?此处https://dev.mysql.com/downloads/timezones.html 中可用的脚本仅与加载表中的数据有关,而与创建它们无关。
我想从表中选择最后 X 行,所以我所做的是:
SELECT * FROM table ORDER BY id DESC LIMIT 120
Run Code Online (Sandbox Code Playgroud)
它有效,但我希望它按升序排列,所以我尝试了:
SELECT * FROM table ORDER BY id DESC LIMIT 120 ORDER BY id ASC
Run Code Online (Sandbox Code Playgroud)
期望它会对选定的行重新排序,但它不起作用。
那么我怎样才能实现它呢?
我是 MySQL 的新手,但我对 SQL Server 有一定的经验。我知道在 SQL Server 中我应该非常谨慎地使用MERGE语句,因为它们会导致一些问题。使用时有什么特别需要注意的ON DUPLICATE KEY UPDATE吗?在 MySQL 社区中,INSERT/UPDATE像 SQL Server 一样坚持使用单独的语句是否被认为是最佳实践,或者ON DUPLICATE KEY UPDATE广泛用于简单的 upserts 是否可以?
我有问题:
#1066 - 不唯一的表/别名:'clients'
SELECT request.*,
clients.ClientName AS ToClient,
clients.ClientName AS FromClient,
drivers.DriName, requesttype.ReqTName
FROM request
INNER JOIN clients ON clients.ClientID = request.ReqToClient
INNER JOIN clients ON clients.ClientID = request.ReqFromClient
INNER JOIN drivers ON drivers.DriID = request.DriID
INNER JOIN requesttype ON requesttype.ReqTID = request.ReqTID
Run Code Online (Sandbox Code Playgroud) 我只是在浏览系统运行状况扩展事件时遇到一个事件,其中包含用于显示工作线程状态的查询处理的诊断结果:
512 + ((logical CPU's - 4) * 16)看起来不正确。但是,这里的最新链接对于大于 64 的逻辑处理器是有意义的,其中 16 的计算更改为 32。但是该链接说从 SQL 2017 开始,但是我得到的数字 2994 是针对 SQL2012, 14 16 的,其中逻辑处理器数为 80 . 我在这里遗漏了什么吗?sp_configure 中的 max worker 设置设置为“0”
maxWorkers="2944" workersCreated="456" workersIdle="314" tasksCompletedWithinInterval="1021881" pendingTasks="1"
我应该检查其他东西还是可以忽略它?