我有桌子
pages_id aliases_name pages_name
-------- -------------------- ------------------
88 main Главная
90 novyny Новости
91 usluhy Главная
92 pomoshch Помощь
93 contact Контакты
94 dobavyt_nedvyzhymost Главная
132 zabyly_parol Главная
133 registration Регистрация
134 vashy_dannye Ваши данные
135 vashy_obiavlenyia Ваши объявления
136 aktyvatsyia Активация
137 pravyla_y_uslovyia Правила и условия
138 smena_parolia Смена пароля
140 about о нас
表格结构:
CREATE TABLE `a_pages_pages` (
`pages_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`aliases_name` varchar(255) NOT NULL,
`pages_name` varchar(255) NOT NULL,
PRIMARY KEY (`pages_id`)
) ENGINE=MyISAM AUTO_INCREMENT=157 DEFAULT CHARSET=utf8
表格中的数据:
insert into `a_pages_pages` (`pages_id`, `aliases_name`, `pages_name`)
values('88','main','Главная'), ('90','novyny','Новости'),
('91','usluhy','Главная'), ('92','pomoshch','Помощь'),
('93','contact','Контакты'), ('94','dobavyt_nedvyzhymost','Главная'),
('132','zabyly_parol','Главная'), ('133','registration','Регистрация'),
('134','vashy_dannye','Ваши данные'),
('135','vashy_obiavlenyia','Ваши объявления'),
('136','aktyvatsyia','Активация'),
('137','pravyla_y_uslovyia','Правила и условия'),
('138','smena_parolia','Смена пароля'), ('140','about','о нас')
我得到简单的查询...
SELECT pages_id, aliases_name, pages_name
FROM a_pages_pages
ORDER BY pages_name ASC
当我从这个查询中知道一些ID(当前行)时:
pages_id aliases_name pages_name
-------- -------------------- ------------------
136 aktyvatsyia Активация
134 vashy_dannye Ваши данные
135 vashy_obiavlenyia Ваши объявления
91 usluhy Главная
132 zabyly_parol Главная <<<< prev row
88 main Главная <<<< current row
94 dobavyt_nedvyzhymost Главная <<< next row
93 contact Контакты
90 novyny Новости
140 about о нас
92 pomoshch Помощь
137 pravyla_y_uslovyia Правила и условия
133 registration Регистрация
138 smena_parolia Смена пароля
我需要从此查询中获取ID prev行和ID下一行.....
那一刻我所知道的
ORDER BY
- 我有哪些栏目和排序顺序。顺序可以是w
pages_id
- 来自php。
PS。使用一些脚本
下一步:
SELECT pages_id, aliases_name, pages_name
FROM a_pages_pages
WHERE pages_name > 'Главная'
ORDER BY pages_name ASC, pages_id DESC
LIMIT 0, 1
不工作,因为我pages_id
= 132,88,94,然后next_id
= 132
并且有职位
SELECT *
(SELECT
`pages_id` AS `id`, @pos := @pos + 1 AS `position`
FROM
`a_pages_pages`,
(SELECT
@pos := 0) AS `p_table`
ORDER BY `pages_name` ASC)
WHERE `position` >
???我不知道POSITION
答案 0 :(得分:0)
尝试这个它会通过传递当前页面ID也给你下一个和上一个页面ID,如果pageid是第一个,那么它将给你最后一个页面ID,如下面的查询我已经使用了页面ID 88 ,并使用page_id列进行订购,因此很容易获得订单
SELECT
COALESCE(
(SELECT
pages_id
FROM
a_pages_pages
WHERE pages_id < 88
ORDER BY pages_id DESC
LIMIT 1),
(SELECT
MAX(pages_id)
FROM
a_pages_pages)
) AS `prev`,
COALESCE(
(SELECT
pages_id
FROM
a_pages_pages
WHERE pages_id > 88
ORDER BY pages_id
LIMIT 1),
(SELECT
MIN(pages_id)
FROM
a_pages_pages)
) AS `next`
示例输出
PREV NEXT
140 90