【问题标题】:mysql insert and select rows with insert idmysql插入并选择带有插入ID的行
【发布时间】:2013-10-30 16:52:42
【问题描述】:

我想选择插入前的前 x 行,比如 10。如果插入之前没有行,那么它只返回已插入的行

插入后,我可以使用 mysql_insert_id();

在此插入之前选择前 10 行是一种智能方法。

这必须适用于区间 0 或 10 内的任何数字。因此假设它们在插入之前是 7 行,那么它将只返回 8 行。

我正在考虑像这样使用限制

  $insertid  = mysql_insert_id()
  $postid    = 200
  Select a, b, c from mytable where a = '$postid' limit $insertid 10 order by b

但这并不像我想象的那样工作。

【问题讨论】:

  • 你指的是在这一行之前插入的 10 行吗?基于某些列 ID 的 10 行?还是别的什么?
  • No 不是在此行之前插入的 10 行。基于变量 $postid 的 10 行。我已经编辑了我的问题
  • 没有 ORDER BY 的限制没有多大意义。在什么意义上,“一些”行在“其他”行之前?

标签: mysql select insert innodb


【解决方案1】:
Select a, b, c from mytable where primary_key_col < '$insertid' and a = 200
ORDER BY primary_key_col DESC LIMIT 10

【讨论】:

  • 很抱歉我编辑了我的问题。您的答案将返回变量 insertid 之前的所有行,但我尝试仅使用列 a 为 200 的行来执行此操作。
  • 根据您的新要求更新。
  • 为了选择插入的评论,我使用 Select a, b, c from mytable where primary_key_col
【解决方案2】:

您可以使用 BETWEEN :

Select a, b, c from mytable where a BETWEEN  $postid - 10 AND $postid 

(顺序很重要)

另外,你应该考虑使用 mysqli_ 而不是 mysql

【讨论】:

    猜你喜欢
    • 2012-07-04
    • 2011-06-30
    • 2012-07-02
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多