使用非数字ID获取MYSQL中的上一条和下一条记录

时间:2013-08-28 20:56:47

标签: php mysql sql database

我正在尝试用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值。

希望你能帮忙!如果您需要更多信息,请告诉我!

1 个答案:

答案 0 :(得分:0)

给它一个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;