Php 组合多个mysql查询以获得一行结果
这是我的桌子:问题Php 组合多个mysql查询以获得一行结果,php,mysql,sql,Php,Mysql,Sql,这是我的桌子:问题 id | name -----+----- 2 | name 1 3 | name 2 4 | name 3 5 | name 4 10 | name 5 20 | name 6 21 | name 7 我的id是5,我需要得到上一行和下一行,所以如果id是5,我需要得到4,5和10 现在我正在使用这些查询 select * from question where id = (select max(id) from questio
id | name
-----+-----
2 | name 1
3 | name 2
4 | name 3
5 | name 4
10 | name 5
20 | name 6
21 | name 7
我的id是5,我需要得到上一行和下一行,所以如果id是5,我需要得到4,5和10
现在我正在使用这些查询
select * from question where id = (select max(id) from question where id < 5);
select * from question where id = (select min(id) from question where id > 5);
如果没有上一个id或下一个id,则应为0或-1
For example
id: 5
Return : 4, 5, 10
id:2
Return : -1, 2, 3
id: 21
Return 20, 21, -1
我知道如何在PHP中使用多个查询和一些if条件来实现这一点,但如果可能的话,我正在寻找一种纯mySQL方法。下一个RecordID:
SELECT * FROM `table_name` WHERE ID > $id ORDER BY ID LIMIT 1;
SELECT * FROM `table_name` WHERE ID < $id ORDER BY ID LIMIT 1;
对于上一个记录ID:
SELECT * FROM `table_name` WHERE ID > $id ORDER BY ID LIMIT 1;
SELECT * FROM `table_name` WHERE ID < $id ORDER BY ID LIMIT 1;
这里$id是php中的一个变量,它会根据您的需要进行更改这里有几个示例,其他人可以告诉您哪一个更有效 问题1 问题2 啊,没有看到-1的定义,需要更多的黑客。Coalesce函数接受1..n个参数并返回第一个非空值 问题3
这与我的问题类似。我在找别的东西。请核对问题。
Select
(select max(id) from question where id<5) as prevId,
id,
(select min(id) from question where id>5) as nextId
From question
Where id=5;
Select
Coalesce( (select max(id) from question where id<21), -1) as prevId,
id,
Coalesce( (select min(id) from question where id>21), -1) as nextId
From question
Where id=21;