将表与同一个表的前一条记录连接起来

2024-06-26

我有一个包含历史记录的表,由主表中的多个触发器发布到那里。我想在历史表上创建一个 select 语句,其中每个记录都由其先前的记录(由相同的 LineID 和最高的 ActionDate 标识)连接,这样我就可以提取这两者之间的差异。

我尝试了这个,但是(My)SQL不允许引用JOINED子查询中的第一个“FROM”表:where子句中的未知列h1.LineID

select 
  h1.*, 
  prev.* 
from history h1
LEFT OUTER JOIN 
  (Select * 
     From history h2 
     where  h1.LineID=h2.LineID and h2.ActionDate < h1.ActionDate 
     order by Actiondate desc limit 1
  ) prev on h1.LineID=prev.LineID

我怎样才能做到这一点?


您可以使用以下命令获取对上一行的引用:

select h.*,
       (select h2.ActionDate
        from history h2
        where h2.LineId = h.LineId and h2.ActionDate < h.ActionDate
        order by h2.ActionDate desc
        limit 1
       ) as prev_ActionDate
from history h;

如果你想要完整的行,你可以使用join获取数据:

select h.*, hprev.*
from (select h.*,
             (select h2.ActionDate
              from history h2
              where h2.LineId = h.LineId and h2.ActionDate < h.ActionDate
              order by h2.ActionDate desc
              limit 1
             ) as prev_ActionDate
      from history h
     ) h left join
     history hprev
     on hprev.LineId = h.LineId and hprev.ActionDate = h.prev_ActionDate;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将表与同一个表的前一条记录连接起来 的相关文章

  • 在mysql中使用smallint数据类型而不是int真的可以节省内存吗?

    在 mysql 表中使用 Smallint 数据类型而不是常规 int 是否真的可以提高内存使用率 无论如何 硬件不会为所有数据分配完整的 64 位字大小吗 如果它不分配完整的字 那么我们是否会看到由于必须从内存中分配的 64 位字中解析出
  • 编写 MySQL 查询以获得所需结果

    我正在使用 MySQL 数据库 风险因素有四种类型 严重 高 中 低 表包含如下数据 id uaid attribute value time risk factor 1 1234 Edge Exist 16123 NONE 2 1234
  • 无需 sudo 连接本地 MySQL 服务器

    这个命令 mysql uroot p 给出以下错误 ERROR 2002 HY000 Can t connect to local MySQL server through socket var lib mysql mysql sock 1
  • 在 CodeIgniter、SQL 中调用布尔值的成员函数 result()

    我试图根据搜索关键字查看 data results 中有哪些数据 但每次都会出现上述致命错误 有人可以帮助我吗 我的控制器 public function execute search search term this gt input g
  • MySQL Socket 在数千个连续连接后拒绝连接

    我目前正在尝试在当前 Ubuntu 机器上填充 MySQL5 1 数据库 其中包含超过 5 000 000 个条目 由于程序的体系结构 对于每个 INSERT 语句 都会打开和关闭一个新的数据库连接 我知道这是一项昂贵的操作 但更改此操作需
  • 如何加载大量字符串与oracle数据库匹配?

    我目前正在学习 PL SQL 所以我还是一个新手 假设您有一个生产数据库 并使用 Oracle SQL Developer 连接到该数据库 您对该数据库仅有读取权限 因此您无法创建或编辑任何表 我的问题是 如果我有一个很大的 ID 列表 我
  • 从表变量中获取列的明确名称

    我可以这样声明一个表变量 DECLARE tv source TABLE c1 int providerName varchar 50 providerSMS varchar 50 如果我执行以下命令 我会看到类似于以下内容的表名称 468
  • ISDATE 相当于 DB2

    我有一个包含字符格式日期的表 我想检查日期的格式 请让我知道如何在 DB2 中做到这一点 我知道有一个函数 ISDATE 但它在 DB2 中不起作用 我在 AS400 上使用 db2 作为日期基础 请帮助我 实际上 看起来 DB2 for
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 在Django中通过ManyToMany关系添加一个对象

    Django 的 ManyToMany 字段 https docs djangoproject com en dev ref models fields django db models ManyToManyField可以使用填充my fi
  • 使用递归 CTE 生成嵌套第 n 层 JSON SQL Server

    我有以下结构的数据 我想使用父属性 id 关系生成嵌套 JSON 所需的输出 propertyID 1 title foo class typeid 150 value bar children propertyID 2 title foo
  • TFS 2017 如何使用 SQL 查询工作项

    我正在寻找一种使用 SQL 选择直接从 TFS 的 SQL 数据库查询工作项的方法 对于 TFS 2010 您可以使用一些数据库视图来实现此目标 TFS2010 如何在关系仓库上使用 SQL 查询工作项 https blogs msdn m
  • 如何将逗号分隔值传递给 MySql 中的存储过程?

    我有像这样的存储过程 CREATE DEFINER test PROCEDURE test get details in p istudid int in p icourseid int in p branchid varchar 20 B
  • 使用 C++ 连接器的 C++ mysql 连接 bad_alloc

    尝试建立一个简单的 mysql 连接 但得到一个bad alloc即使查看类似的帖子 我也不知道如何解决这个问题 这是我的代码 include
  • 数据库记录的多级菜单

    我需要一些有关 PHP 的帮助 我有一个工作正常的多级 css 菜单 但现在我想根据数据库中的记录生成 菜单代码 div ul class dropdown li a href Link 1 a li li a href Link 2 a
  • Oracle 中的 if(条件, then, else)

    MySQL MSSQL 有一个简洁的小内联 if 函数 您可以在查询中使用它来检测空值 如下所示 SELECT foo a field AS a field SELECT if foo bar is null 0 foo bar AS ba
  • 如何使用 SQL 计算一条路线的行驶次数?

    我需要确定在给定的日期范围内每辆车行驶特定路线的次数 但建立在数据库之上的 GPS 管理软件没有此功能 该数据库包含多个存储 GPS 路线和位置数据的表 路线由多个位置和序列号组成 位置是附加到名称的一组上限和下限纬度 经度值 车辆每分钟将
  • 使用非管理员帐户时,SQL Linked Server 返回错误“不存在登录映射”

    我有一个本地 SQL Server 2008R2 我已将链接服务器配置为远程数据库 当我使用 SQL 登录帐户登录本地服务器时 链接服务器工作得很好sysadmin服务器角色 我可以查询远程服务器 因此我知道链接服务器设置是正确的 但是 如
  • 邮政编码 10 位数字字符使用的约束检查

    我有一张桌子 上面有Char 10 列类型 命名postal Code我需要对所有值进行约束检查 就像 10 位数字一样1234567890没有别的 我使用以下内容 CONSTRAINT CH PCDigit CHECK PostalCod
  • 如何在数据库中存储世界各地的所有地理位置?

    我在一家旅游网站工作 我需要存储游客去过的旅游景点 我需要位置表中的地点是唯一的 以便我可以知道特定地点的受欢迎程度等 我还需要存储在我身边的所有国家 州 城市 因为我不能依赖用户输入 数据库是MySQL 看到这些位置的可用数据集 我发现存

随机推荐