Php 如何在没有自动递增ID的情况下获取最后4条记录

Php 如何在没有自动递增ID的情况下获取最后4条记录,php,sql,Php,Sql,我有一个表,它的主键不是自动递增的。这里的PK是导引头 我想得到这张表的最后4条记录 SEEKER seeker_nic Name --------------------- 81025 ali 81013 bilal 87651 hamza 78911 biya 98726 saqib 62528 mirza

我有一个表,它的主键不是自动递增的。这里的PK是导引头 我想得到这张表的最后4条记录

 SEEKER
    seeker_nic     Name
    ---------------------
    81025          ali
    81013          bilal
    87651          hamza 
    78911          biya
    98726          saqib
    62528          mirza
我想要这个

seeker_nic     Name
---------------------
87651          hamza 
78911          biya
98726          saqib
62528          mirza

我可以这样做,如果表有自动递增的id PK。。。但是我不知道如何用这个PK搜索器获得记录…

自动递增不是问题。问题在于,关系数据库中的行没有隐含的顺序,因此无法确定最后4条记录是哪一条,除非有一列包含该信息

根据您在问题中提供给我们的信息,数据库无法对您的记录进行排序:无法对seeker_nic和name进行排序,以按照您的要求提供记录

如果您有一个可以排序的列,如创建日期或id列,您可以执行以下操作:

  SELECT seeker_nic, name 
    FROM seeker
ORDER BY <column_here> DESC
   LIMIT 4                   -- syntax may vary depending on RDMBS
仅仅因为你有一个自然的密钥搜索器,并不意味着你不能有一个自动递增的代理密钥


如果您没有一个列可以决定列的排序方式,那么您的运气就差了。

自动递增不是问题所在。问题在于,关系数据库中的行没有隐含的顺序,因此无法确定最后4条记录是哪一条,除非有一列包含该信息

根据您在问题中提供给我们的信息,数据库无法对您的记录进行排序:无法对seeker_nic和name进行排序,以按照您的要求提供记录

如果您有一个可以排序的列,如创建日期或id列,您可以执行以下操作:

  SELECT seeker_nic, name 
    FROM seeker
ORDER BY <column_here> DESC
   LIMIT 4                   -- syntax may vary depending on RDMBS
仅仅因为你有一个自然的密钥搜索器,并不意味着你不能有一个自动递增的代理密钥


如果您没有一个列可以决定列的排序方式,那就是运气不好。

您有一个时间戳列作为表架构的一部分?此表中还有其他列吗?您不能通过创建并将结果限制为4来进行SQL查询排序吗?经验教训是,seeker nic应该是一个索引键,添加排序的自动递增id…您有一个时间戳列作为表架构的一部分?此表中还有其他列吗?您不能通过创建并将结果限制为4来进行SQL查询排序吗?经验教训是,seeker nic应该是索引键,添加排序的自动递增id。。。