【问题标题】:Mysql interupt query and start from latest ID another queryMysql中断查询并从最新ID开始另一个查询
【发布时间】:2011-08-21 21:53:03
【问题描述】:

我收到了一组将被中断的查询。因此,我需要停止查询,保存最后添加的 ID,并在另一天继续从最后一个 ID 添加内容。

情景:

1) 我从另一个表 (Table-A) 中查询数据,如下所示:

SELECT *
FROM $table_A
ORDER BY uID ASC

2)然后我添加到一个“看起来”像这样的表格(Table-B):

|¯¯¯¯¯|¯¯¯¯¯¯¯¯|¯¯¯¯¯¯|¯¯¯¯¯|¯¯¯¯¯|
| uID | SubID* | Name | Foo | Bar |
|-----|--------|------|-----|-----|
|  1  |   23   | Boo  | Goo | Shu |
|_____|________|______|_____|_____|

3) 对于我从 Table-A 表中查询的每一行,我将数据添加到 Table-B 表中。 (注意:这个表在我添加数据时已经有了 uID、SubID 和 Name。

4) 查询被中断/停止。然后,我将最新添加的行的 uID*(在查询停止之前)保存到单独的表(Table-C)中。

问题:如何开始查询 - 中断后(假设在第二天) - 再次,但从我保存的最后一行之后的下一行开始前一天(该 uID 将可用)。

例子:

SELECT * 
FROM $table_A
ORDER BY uID ASC
LIMIT $last_uID, COUNT $table_A (a.k.a "the last ID in the table")

谢谢!

注意事项:

  • SubID 将行连接到其他表并且可以存在多次。
  • UID = 唯一标识符(自动递增)。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你知道最后添加的 ID 是什么,因为它将在 table_B 中。

    SELECT *
    FROM $table_A
    WHERE uID > (select max(uID) from table_B)
    ORDER BY uID ASC
    

    更新:

    看来这是需要的。

    SELECT all columns
    FROM $table_A
    WHERE uID BETWEEN $last_uID_added AND $last_uID_in_table; 
    

    【讨论】:

    • 感谢您的回答。我知道​​ uID 是什么(如 Q 中所写)。我只是忘了说明一些数据已经存在——比如 uID——很抱歉。我的问题是:我怎么能说(在 MySQL 中)“从 $table_A WHERE uID = $last_uID_added UNTIL $last_uID_in_table 中选择所有列”?我猜max 在这种情况下不起作用,因为已经存在所有 uID。
    • 从 $table_A 中选择所有列,其中 uID 在 $last_uID_added 和 $last_uID_in_table 之间;
    • 你能更新你的 A 吗?那正是我正在搜索的内容。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多