【问题标题】:Get Previous and Next records in MYSQL with non-numeric ID使用非数字 ID 获取 MYSQL 中的上一条和下一条记录
【发布时间】:2013-08-29 05:04:05
【问题描述】:

我正在尝试用 PHP / MySQL 开发一个小型照片编目和存储系统。目前我的数据库结构如下:

CREATE TABLE `photos` (
  `picid` varchar(36) NOT NULL,
  `uploaded` varchar(10) NOT NULL,
  `picdesc` text NOT NULL,
  `views` bigint(20) NOT NULL,
  `albumid` varchar(36) NOT NULL COMMENT 'fkey albums',
  `uploadedby` varchar(50) NOT NULL COMMENT 'fkey users',
  `exif` longtext NOT NULL,
  `album_protected` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`picid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

picid 字段是用作主键的 GUID。

我需要帮助来创建一个 SQL 查询,该查询将返回传入 picid 之前的记录以及它的下一个记录。我想我需要使用两个查询,但也许有人可以告诉我。记录按uploaded 排序,这是一个 UNIX TIMESTAMP 值。

希望您能提供帮助!如果您需要更多信息,请告诉我!

【问题讨论】:

标签: php mysql sql database


【解决方案1】:

给它一个 auto_increment 整数字段作为主键,并将 picid 更改为唯一。作为唯一的,它将被索引并且仍然可以用作查找。但是如果你想要你的行中的序列,你需要一个 auto_increment 字段,并且这些字段必须是 MySql 中的主键。

 CREATE TABLE `photos` (
 `rowid` int auto_increment primary key,
 `picid` varchar(36) NOT NULL UNIQUE,
 `uploaded` varchar(10) NOT NULL,
 `picdesc` text NOT NULL,
 `views` bigint(20) NOT NULL,
 `albumid` varchar(36) NOT NULL COMMENT 'fkey albums',
 `uploadedby` varchar(50) NOT NULL COMMENT 'fkey users',
 `exif` longtext NOT NULL,
 `album_protected` tinyint(1) NOT NULL default '0'
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

【讨论】:

  • 谢谢,我会修改表格并从那里拿走:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多