Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql显示基于mysql中找到的记录的分区_Mysql_Sql - Fatal编程技术网

sql显示基于mysql中找到的记录的分区

sql显示基于mysql中找到的记录的分区,mysql,sql,Mysql,Sql,抱歉,我知道您需要示例代码,但不幸的是,我完全不知道如何实现此功能,也不知道要搜索什么 让我们假设我们有这种关系: ╔═══════════════════╗ ║ id name quality ║ ╠═══════════════════╣ ║ 1 Will 4 ║ ║ 2 Joe 9 ║ ║ 3 Bill 2 ║ ║ 4 Max 1 ║ ║ 5 Jan 10 ║ ║ 6 Susi 5

抱歉,我知道您需要示例代码,但不幸的是,我完全不知道如何实现此功能,也不知道要搜索什么

让我们假设我们有这种关系:

╔═══════════════════╗
║ id  name  quality ║
╠═══════════════════╣
║ 1   Will  4       ║
║ 2   Joe   9       ║
║ 3   Bill  2       ║
║ 4   Max   1       ║
║ 5   Jan   10      ║
║ 6   Susi  5       ║
║ 7   Chris 6       ║
║ 8   Noa   9       ║
║ 9   Sisi  4       ║
╚═══════════════════╝
现在我需要一个基于我正在搜索的数据的子集。 例如,我正在搜索id为5的记录。 在我的结果中,我需要的不仅仅是一月的记录,我还需要一月之前的两个记录和一月之后的两个记录。因此,我有以下结果集:

╔═══════════════════╗
║ id  name  quality ║
╠═══════════════════╣
║ 3   Bill  2       ║
║ 4   Max   1       ║
║ 5   Jan   10      ║
║ 6   Susi  5       ║
║ 7   Chris 6       ║
╚═══════════════════╝

你能给我一些解决这个问题的关键字吗?

假设ID字段总是按照预设顺序,通过ID字段可以计算特定行的前后两个,你可以执行两个简单查询中的一个:

SELECT * 
FROM   tbl1 
WHERE  id BETWEEN 3 AND 7 
可以找到一个SQLFiddle演示

或:

可以找到一个SQLFiddle演示

我希望这能回答你的问题。 如果你还需要什么,请告诉我

祝你好运

sqlfiddle演示

SET @search_id = 5;

SELECT * 
FROM my_table
WHERE id BETWEEN (@search_id - 2) AND (@search_id + 2);

芜湖!太多了!工作完美!好奇的问题,吉迪尔。你为什么用:=来设置而不是=?我想这只是出于习惯。据我所知,两种方式都可以。芜湖!太多了!工作完美!非常感谢。一切正常。但我更喜欢吉迪尔的解决方案。
SET @search_id = 5;

SELECT * 
FROM my_table
WHERE id BETWEEN (@search_id - 2) AND (@search_id + 2);
(SELECT * FROM test
    WHERE id >= 5
    ORDER BY id
    LIMIT 3)

UNION 

(SELECT * FROM test
WHERE id < 5
ORDER BY id DESC
LIMIT 2)