GVKun编程网logo

根据位置SQL Server重新排序行(sqlserver按照指定顺序排序)

23

本篇文章给大家谈谈根据位置SQLServer重新排序行,以及sqlserver按照指定顺序排序的知识点,同时本文还将给你拓展MSSQLServerDocker数据位置、server端重新启动后clie

本篇文章给大家谈谈根据位置SQL Server重新排序行,以及sqlserver按照指定顺序排序的知识点,同时本文还将给你拓展MS SQL Server Docker数据位置、server端重新启动后client端怎样和server重新连接?、SQL SERVER ID标识列重新排列、sql-server – Microsoft SQL Server安装位置的重要性等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

根据位置SQL Server重新排序行(sqlserver按照指定顺序排序)

根据位置SQL Server重新排序行(sqlserver按照指定顺序排序)

我在SO上看到了很多与此问题有关的问题,但都与我的情况无关。除了进行基本的CRUD操作外,我与SQL专家们无二。因此,我对此非常执着。

我有一张表。

myTable [rID, newsID, OrderPosition] 在哪里;

rID is primaryKey int column, newsID int is the ID of an item from another table and,OrderPosition int to hold the position of the rows.

myTable始终总有10行。

因此,首先,假设myTable具有以下数据:

rID    newsID    OrderPosition100    4000      1101    4100      2102    4200      3103    4300      4104    4400      5105    4500      6106    4600      7107    4700      8108    4800      9109    4900      10

预期的功能应如下所示;

插入新

当插入新项目时,用户应该能够将其插入到他/她想要的任何位置。现在,我仅设法通过删除OrderPosition =
10行,将新记录的OrderPosition分配为0并对表重新排序来将新记录插入到第一个位置。但是客户希望选择物料应移至哪个位置。在这种情况下,我假设OrderPosition
= 10将再次被删除?

删除

当从该表中删除一条记录时,由于总会有10条记录,因此我需要从另一个表[tblNews]中获取最新输入的记录,并将其插入到第10个位置(我可以从tblNews中获取最后一条记录)由于我不知道它们将删除哪条记录,因此我不知道在删除记录后如何对表重新排序。

任何帮助,代码,文章的方向将不胜感激。

===========编辑====================

答案中提到的UPDATE方法对我不起作用;因为
例如,用户想要将新记录插入5阶位置。这意味着将删除订单头寸10,并将当前位置为5、6、7、8和9的记录增加1。

答案1

小编典典

插入行时,您需要“移动”下面的行以为其留出空间。例如,可以像这样在位置4上插入:

DELETE FROM myTable WHERE OrderPosition = 10; -- If you want the keep the table from growing beyond 10 rows.UPDATE myTable SET OrderPosition = OrderPosition + 1 WHERE OrderPosition >= 4;INSERT INTO myTable VALUES (..., 4);

相反,删除该行后,可以将其“下方”的行向上备份:

DELETE FROM myTable WHERE OrderPosition = 4;UPDATE myTable SET OrderPosition = OrderPosition - 1 WHERE OrderPosition > 4;-- Now you can insert the row on position 10 if desired.

请注意,即使OrderPosition对其具有UNIQUE约束,UPDATE也不会违反它。

[SQL提琴]

MS SQL Server Docker数据位置

MS SQL Server Docker数据位置

对于Linux上的SQL Server,这些文件默认位于/var/opt/mssql中。毫无疑问,数据文件位于data目录中,日志文件位于log目录中。

这也位于文档Change the default data or log directory location中:

filelocation.defaultdatadir和filelocation.defaultlogdir设置更改了创建新数据库和日志文件的位置。默认情况下,此位置为/ var / opt / mssql / data。

,

取决于OS平台以及是否已安装持久性存储

如果是Linux,则根据@Larnu答案。

对于Windows,它仍然是C:\Program Files\Microsoft SQL Server...

但是,在两种情况下,数据都具有容器的生命周期。重新启动容器后,所有更改都将消失。

对于已装入的卷,位置将由卷确定,并且数据是持久的,因此它可以在容器重启后幸存下来

server端重新启动后client端怎样和server重新连接?

server端重新启动后client端怎样和server重新连接?

server端是通过

Aio.sendToId(serverGroupContext, id, resppacket);

方法发送消息的,但是server端重新启动,client端没有重新启动这是获得client  id

已经不好用了 ,请问什么办法可以解决该问题,或者是client重连server?谢谢!

SQL SERVER ID标识列重新排列

SQL SERVER ID标识列重新排列

我们经常使用SQL ServerID自增长,也就是所谓的标识列来充当某张表的主键。这里有两个概念要澄清:

1. 标识列:可用 IDENTITY 属性建立,使应用程序开发人员得以对表中所插入的第一行指定标识数字(Identity Seed 属性),并确定要添加到种子上的增量(Identity Increment 属性)以决定后面的标识数字。在向具有标识符列的表中插入值时,通过递增种子值的方法自动生成下一个标识值。

2. 主键:可用primary key表示。唯一标识表中的所有行的一个列或一组列。主键不允许空值。不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行。 

       那么,当我们表中的数据很多,又有些删除的操作时,标识列就不连贯了,我们如何让表中已有记录的标识列从1开始重新排列,并将标识列的下一个值设为记录数加1呢?下面我们以一张studentid identity(1,1) primary key,name,age)表为例。

(1) 清空表,标识种子置初值,这里要注意的是下面的语句会清空表中的所有原有数据。 

truncate table student

(2) 先要取消标识列,完成下面的语句后再将标识列加上,这样标识列又可以按顺序递增了。这里你可以直接使用企业管理器操作。

declare   @i   int
select   @i   =   0
update   student set @i = @i+1,id = @i

(3) 利用临时表,步骤就是将表中除id以外的数据拷贝到临时表中,再清空原表,插入临时表的数据,最后删除临时表。

--将数据倒入临时表

select  name,age   into   #   from  student   order   by   id

--清空源表,它同时会重置标识列

truncate   table   student

--将数据导回源表

insert   into   student   select   *   from   #

--删除临时表  

drop   table   #

在插入测试数据的时候一条一条记录的插入,这样太浪费时间,我们可以写一条循环语句加快测试速度:

declare   @i   int  
  set   @i=1  
  while   @i<=100  
        begin  
            insert   into   student   values   (''tbag''+cast(@i as varchar)
,25+@i)  
            set   @i=@i+1  
        end

sql-server – Microsoft SQL Server安装位置的重要性

sql-server – Microsoft SQL Server安装位置的重要性

我有一个服务器与廉价的慢速磁盘和昂贵的快速磁盘.

我想将昂贵的磁盘用于所有重要的事情,例如我的数据库.

为了省钱,我想将慢速磁盘用于任何无论快速还是慢速都没有太大区别的地方,比如备份.

现在,我的问题是,我应该在慢速或快速磁盘上安装我的Microsoft sql Server吗?

(要清楚,无论如何,我都会将数据库放在快速磁盘上,所以我的问题只与安装本身的位置有关)

解决方法

这是一种意见,但我会把sql Server二进制文件放在慢速磁盘上.将二进制文件放在操作系统磁盘上是很常见的(虽然有些人讨厌这个),或者放在较慢的磁盘上.

但是,您肯定要记住将系统数据库(尤其是tempdb)放在更快的磁盘上.事实上,将tempdb放在自己身上也很常见.

这符合a couple of articles我发现可能对您有用.

还有一些事务日志备份需要考虑,而且由于你希望LDF位于速度更快的磁盘上并且你还希望在数据库所在的不同磁盘上进行备份,所以我对此感到不满,但是如果它们位于更快的磁盘.你需要做一个判断调用,但我可能会回到较慢的磁盘并抱怨它.

总结

以上是小编为你收集整理的sql-server – Microsoft SQL Server安装位置的重要性全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

关于根据位置SQL Server重新排序行sqlserver按照指定顺序排序的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于MS SQL Server Docker数据位置、server端重新启动后client端怎样和server重新连接?、SQL SERVER ID标识列重新排列、sql-server – Microsoft SQL Server安装位置的重要性的相关信息,请在本站寻找。

本文标签: