小编ype*_*eᵀᴹ的帖子

添加“上次发生时间”标志列

我需要在包含 3 列的表中添加一列:

  1. GroupKey - 显示项目的编号。
  2. 状态 - 组根据插入日期所处的状态编号。状态编号可以前后更改多次。
  3. 插入日期 - 状态更改的时间和日期。

这 3 列永远不会改变。它就像一个“日志”表,只能添加行,不能删除或更改行

我需要的第四列(计算列)是一个标志列,它将显示状态是否是基于 insert_date 的最后一次状态更改。

如果是最后一个状态,则显示 1,否则显示 0。我希望我解释得足够好。下面是一个例子:

这是桌子。

sql-server greatest-n-per-group

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

添加引用不是主键或唯一键的列的外键

当我想将表 A 的列的值限制为仅从表 B 的相关列中的一组可选值中获取时,我遇到了麻烦。

问题是表 B 的相关列不是外键。如果我这样做,我想我可以为不同的列值多次使用相同值的正确状态将是不可能的 - 这不是我寻找的行为。

那么可以做什么呢?

mysql database-design

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

null 是否比 iif(exists) 更好?

我试图减少我们应用程序数据库上的巨大性能问题。我们使用 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)

顺便说一句,如果您对查询的形式有任何意见或一般性建议,请随时发表评论。

sql-server sql-server-2014

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

表中有 2 个身份

我需要在一张表中包含 2 个标识列。一个是正​​常身份,另一个将每年重置。

DBCC CHECKIDENT ('TestTable', RESEED, 0)在插入程序的帮助下完成了重置部分。

但除了这个,我不知道如何拥有一个正常的身份。解决方案可能使用两个表,但我更喜欢将它们都放在一个表中。

sql-server identity sql-server-2012

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

查询 2 个表,一个有 1 行,另一个有多行

我有一个零件表:

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)

我看过连接、枢轴等,我想我似乎无法理解它。任何帮助是极大的赞赏。

sql-server group-by

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

我在 MySQL 的 sys 数据库中找不到时区表

对于我的 Django 应用程序,我必须将时区设置为 UTC,但是我无法设置它,因为我在系统数据库中找不到任何与时区相关的表。

我怎么得到那些?此处https://dev.mysql.com/downloads/timezones.html 中可用的脚本仅与加载表中的数据有关,而与创建它们无关。

  • MySQL 版本:5.7
  • 操作系统:Windows

mysql timezone mysql-5.7

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

按 asc 获取最后 X 行顺序

我想从表中选择最后 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 order-by

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

我应该警惕 ON DUPLICATE KEY UPDATE 吗?

我是 MySQL 的新手,但我对 SQL Server 有一定的经验。我知道在 SQL Server 中我应该非常谨慎地使用MERGE语句,因为它们会导致一些问题。使用时有什么特别需要注意的ON DUPLICATE KEY UPDATE吗?在 MySQL 社区中,INSERT/UPDATE像 SQL Server 一样坚持使用单独的语句是否被认为是最佳实践,或者ON DUPLICATE KEY UPDATE广泛用于简单的 upserts 是否可以?

mysql best-practices upsert mysql-5.6

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

#1066 - 不唯一的表/别名:'clients'

我有问题:

#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)

mysql

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

SQL Server 中的 MAX 工作线程 2012/14/16

我只是在浏览系统运行状况扩展事件时遇到一个事件,其中包含用于显示工作线程状态的查询处理的诊断结果:

  1. 当我有 80 个逻辑处理器时,为什么最大工作线程显示 2994,根据 msdn 计算,这里 512 + ((logical CPU's - 4) * 16)看起来不正确。但是,这里的最新链接对于大于 64 的逻辑处理器是有意义的,其中 16 的计算更改为 32。但是该链接说从 SQL 2017 开始,但是我得到的数字 2994 是针对 SQL2012, 14 16 的,其中逻辑处理器数为 80 . 我在这里遗漏了什么吗?

sp_configure 中的 max worker 设置设置为“0”

  1. 回到该系统运行状况事件状态,显示以下 no 的警告:

maxWorkers="2944" workersCreated="456" workersIdle="314" tasksCompletedWithinInterval="1021881" pendingTasks="1"

我应该检查其他东西还是可以忽略它?

sql-server sql-server-2012 sql-server-2014 cpu

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