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)