SQL Server 2008 R2:仅显示最近添加的记录

SQL Server 2008 R2:仅显示最近添加的记录,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我有两张桌子: 客户:包含客户ID和客户名称等客户详细信息 客户地址:此表包含客户ID和客户地址 表格:客户 create table cust ( cust_id int, cust_name varchar(10) ); 记录插入: insert into cust values(1,'A'); insert into cust values(2,'B'); insert into cust values(3,'C'); insert into cust values(4,'D')

我有两张桌子:

  • 客户:包含客户ID和客户名称等客户详细信息

  • 客户地址:此表包含客户ID和客户地址

  • 表格
    客户

    create table cust
    (
      cust_id int,
      cust_name varchar(10)
    );
    
    记录插入

    insert into cust values(1,'A');
    insert into cust values(2,'B');
    insert into cust values(3,'C');
    insert into cust values(4,'D');
    
    insert into cust_address values(1,'US');
    insert into cust_address values(2,'UK');
    insert into cust_address values(3,'UAE');
    insert into cust_address values(4,'SA');
    insert into cust_address values(1,'AUS');
    insert into cust_address values(2,'IND');
    insert into cust_address values(3,'SL');
    insert into cust_address values(1,'CHINA');
    
    Cust_ID    Cust_Name   Cust_Add
    -------------------------------
    1          A           CHINA
    2          B           IND
    3          C           SL
    4          D           SA
    
    表格
    客户地址

    create table cust_address
    (
      cust_id int,
      cust_add varchar(50)
    );
    
    记录插入

    insert into cust values(1,'A');
    insert into cust values(2,'B');
    insert into cust values(3,'C');
    insert into cust values(4,'D');
    
    insert into cust_address values(1,'US');
    insert into cust_address values(2,'UK');
    insert into cust_address values(3,'UAE');
    insert into cust_address values(4,'SA');
    insert into cust_address values(1,'AUS');
    insert into cust_address values(2,'IND');
    insert into cust_address values(3,'SL');
    insert into cust_address values(1,'CHINA');
    
    Cust_ID    Cust_Name   Cust_Add
    -------------------------------
    1          A           CHINA
    2          B           IND
    3          C           SL
    4          D           SA
    
    现在我想显示结果,其中包含插入表
    Cust\u address
    中的最新客户地址

    预期结果

    insert into cust values(1,'A');
    insert into cust values(2,'B');
    insert into cust values(3,'C');
    insert into cust values(4,'D');
    
    insert into cust_address values(1,'US');
    insert into cust_address values(2,'UK');
    insert into cust_address values(3,'UAE');
    insert into cust_address values(4,'SA');
    insert into cust_address values(1,'AUS');
    insert into cust_address values(2,'IND');
    insert into cust_address values(3,'SL');
    insert into cust_address values(1,'CHINA');
    
    Cust_ID    Cust_Name   Cust_Add
    -------------------------------
    1          A           CHINA
    2          B           IND
    3          C           SL
    4          D           SA
    

    以下是表及其记录的详细信息。

    您无法按任何特定顺序检索行。您需要更多信息才能获得订单。 最好的方法是客户地址中的主索引

    CustAddrID int identity(1, 1) not null primary key
    
    您还可以有一个CreatedOn列,该列的默认值等于getDate()

    之后,您可以计算每个Cust记录的CustAddr的最后插入值

    如果您无法在那里添加新列,那么可能 功能。但你的问题似乎太琐碎了

    SQL Server 2016中也存在一些问题。但这可能又太过分了

    下面是一个使用主键CustAddrID

    每次向表中插入新值时,标识列都会增加。案例的正确值将是具有最高客户添加id和指定客户id的记录

    在上面的查询中,我们使用row\u number()函数为每个客户id(按客户id划分)以描述顺序从1开始生成数字。最后,我们只取生成的编号rn等于1CLA.rn=1的记录,并将其加入到cust表中


    您可以用max(cust_add_id)替换row_number(),用cust_id替换group。但是,在这种情况下,您需要加入cust_add表两次

    您无法按任何特定顺序检索行。您需要更多信息才能获得订单。 最好的方法是客户地址中的主索引

    CustAddrID int identity(1, 1) not null primary key
    
    您还可以有一个CreatedOn列,该列的默认值等于getDate()

    之后,您可以计算每个Cust记录的CustAddr的最后插入值

    如果您无法在那里添加新列,那么可能 功能。但你的问题似乎太琐碎了

    SQL Server 2016中也存在一些问题。但这可能又太过分了

    下面是一个使用主键CustAddrID

    每次向表中插入新值时,标识列都会增加。案例的正确值将是具有最高客户添加id和指定客户id的记录

    在上面的查询中,我们使用row\u number()函数为每个客户id(按客户id划分)以描述顺序从1开始生成数字。最后,我们只取生成的编号rn等于1CLA.rn=1的记录,并将其加入到cust表中


    您可以用max(cust_add_id)替换row_number(),用cust_id替换group。但是,在这种情况下,您需要加入cust_add表两次

    您将无法按插入顺序从链接表中取出行

    您需要为此设置一个列

    想象一下,如果您需要为每个记录保留一条记录以供创建,元数据会有多大!您是否还希望在元数据上保留元数据,以便知道元数据何时更新?空间使用可能会迅速升级

    SQLServer保留了一些统计信息,但这种特定信息需要来自用户定义的字段


    因此,您要么在CustAddr表[CustAddr int identity(1,1)not null primary key]中使用一个标识列,要么为createdDateAndTime DateTime Default GetDate()添加一个列。

    您将无法按插入顺序从链接表中取出行

    您需要为此设置一个列

    想象一下,如果您需要为每个记录保留一条记录以供创建,元数据会有多大!您是否还希望在元数据上保留元数据,以便知道元数据何时更新?空间使用可能会迅速升级

    SQLServer保留了一些统计信息,但这种特定信息需要来自用户定义的字段


    因此,您可以在CustAddr表[CustAddr int identity(1,1)not null primary key]中使用一个identity列,或者为createdDateAndTime DateTime Default GetDate()添加一个列。

    您可以按此添加一个名为created date and order的列column@User2012384,你的意思是没有日期栏是不可能的?或者你可以按Cust_ID栏下单,但无法知道哪条记录是最近的inserted@MAK:否,如果您想知道行是何时插入的,则需要有一个
    DateCreated
    列,您可以稍后查询该列。SQL Server本身不提供您可以在数据库和特定表中启用更改数据捕获的功能。CDC表将保存最后插入的记录您可以添加一个名为created date and order的列column@User2012384,您的意思是没有日期列是不可能的?或者您可以按客户ID列进行订购,但无法知道哪条记录是最近更新的inserted@MAK:否,如果您想知道插入行的时间,由您决定是否创建一个
    DateCreated
    列,您可以稍后查询该列。SQL Server本身不提供您可以在数据库和特定表中启用更改数据捕获的功能。CDC表将保存上次插入的记录谢谢。但是在c之后