【问题标题】:find entries to the left and right of a certain entry in a mysql table in a single query在单个查询中查找 mysql 表中某个条目的左侧和右侧的条目
【发布时间】:2013-04-14 22:19:24
【问题描述】:

假设我在this table 之类的数据库中有一个表。假设我想获取主键等于 5(或任何其他主键)的条目左侧和右侧的条目。所以在我们的例子中,我想获取主键分别等于 4 和 6 的条目。会给我这样的结果的 SQL 查询是什么?你们能把 SQL 查询翻译成find('all') CakePHP 查询吗?

谢谢

注意:id 不一定是连续的,也就是说,它们不一定遵循 1、2、3、4、5、6、7、8 的顺序。我可以有 1、5、13、44、66、123 等

【问题讨论】:

    标签: php mysql sql cakephp cakephp-1.3


    【解决方案1】:

    试试这样的联合

     (SELECT * FROM employee WHERE id < 5 order by id DESC LIMIT 1)
     UNION
     (SELECT * FROM employee WHERE id >5  LIMIT 1)
    

    【讨论】:

    【解决方案2】:

    PHP

    $id = 5;
    SELECT * FROM Employee where id = $id-1 OR id = $id+1;
    

    MySQL

    SET @id = 5;
    SELECT * FROM Employee where id = @id-1 OR id = @id+1;
    

    【讨论】:

    • 如果我的主键类似于 1, 5, 13, 44, 66, 123 怎么办?
    【解决方案3】:

    结帐find('neighbors')。它返回您指定的记录之前和之后的记录,并且您的 id 在序列中可以有“洞”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 2023-03-22
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多