我想尝试做一些相对简单的事情,我猜,但我无法绕过它。
我想在表格中找到某个ID,然后选择符合特定条件的下一行X行。
示例表:
+++++++++++++++++++++++++++++++
| id | type | value | sorting |
+++++++++++++++++++++++++++++++
|1 | 'x' | 'foo' | 1 |
|2 | 'y' | 'bar' | 5 |
|3 | 'z' | 'foo2'| 9 |
|4 | 'z' | 'bar2'| 29 |
|5 | 'x' | 'foo3'| 3 |
|6 | 'z' | 'bar3'| 11 |
|7 | 'z' | 'foo4'| 4 |
+++++++++++++++++++++++++++++++
我想要的是从type = 'z'
的行开始选择id = 3
的下一行X行,按sorting
排序。
因此,对于此表,我希望按顺序获取标识为3, 6, 4
的行。请注意,标识为7
的行与该类型匹配,但其sorting
值低于标识为3
的行。
这可以在一个查询中完成吗?
我的想法:对于示例表,这样做会:
SELECT * FROM table WHERE type = 'z' AND sorting > 9 ORDER BY sorting LIMIT 3, X
但显然,我还不知道值9和偏移量,所以我需要一种方法:
3
的排序值。3
的偏移量。编辑:我现在在哪里:
SELECT
*
FROM table
WHERE type = 'z' AND sorting > (SELECT sorting FROM table WHERE id = 3)
ORDER BY sorting
LIMIT 0, 25
所以最后一步是获取3
的偏移量并将其作为第一个参数传递给LIMIT。
答案 0 :(得分:0)
您的目标仍不明确。但这是我的尝试:
http://sqlfiddle.com/#!9/2d389/1
SELECT t1.*
FROM foobar t1
JOIN (SELECT *
FROM foobar
WHERE id=3
) t2
ON t1.id >= t2.id
AND t1.type = t2.type
AND t1.sorting >= t2.sorting
ORDER BY sorting
LIMIT 10