光标是唯一的方法吗?

时间:2011-04-11 23:21:31

标签: php mysql cursor

我正在研究我所拥有的一些原始数据。数据位于MySQL数据库中。数据列表以毫秒到毫秒的格式列出了当前正在发生的许多可能“事件”中的哪一个。它只有几列:

  1. id - 行的唯一标识符
  2. event - 表示当前正在发生的事件
  3. 我想要做的是获取有关这些数据的一些基本信息。具体来说,我想创建一个包含以下内容的表:

    1. 事件开始的ID
    2. 活动结束的ID
    3. 索引事件及其出现的新id,以及详细说明当前正在发生哪个事件的列。
    4. 我知道使用PHP很容易处理,只需在所有记录中使用一个简单的循环,但我试图在这里突破我的MySQL知识的界限(这可能很危险,我知道!!)。

      所以,我的问题是:光标是最好用的吗?我问,因为事件可能会多次发生,所以做一些像事件类型分组的东西是行不通的 - 或者它会不会发生?我只是想知道是否有一种巧妙的处理方法,我已经错过了,而不需要按顺序遍历每一行。

      谢谢!

1 个答案:

答案 0 :(得分:1)

为了演示我之前评论过的内容,请说明您有以下表格:

event_log
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  start DATETIME
  event VARCHAR(255)                     # or whatever you want for datatype

收集此信息非常简单:

SELECT   el.*,
         (SELECT   el_j.start            # -
          FROM     event_log el_j        #  |
          WHERE    el_j.id > el.id       #  |- Grab next row based on the next ID
          LIMIT    1) as end             # -
FROM     event_log
ORDER BY start;