示例
id |u_id
1 | 1
2 | 1
3 | 2
4 | 1
5 | 2
6 | 3
我知道,id
4的u_id
为{1},但我希望在u_id
之前选择id
1的最后一行4,即我想要选择id
2的行。
请注意,我不知道id
。
我怎样才能做到这一点?
这就是结果应该是这样的:
id |u_id
2 | 1
4 | 1
答案 0 :(得分:0)
select * from table where uid=1 order by id desc limit 2
答案 1 :(得分:0)
这可能会对你有所帮助。
SELECT * FROM ( SELECT * FROM yourTable WHERE u_id=1 ORDER BY id DESC LIMIT 2) AS tab ORDER BY tab.id ASC
答案 2 :(得分:0)
正如你的标题所述:
从行中选择上一条记录
以下内容为您提供 之前 到2
的每一行,并且不仅可以使用您在“{1}}中显示的数据”。你的例子:
SELECT *
FROM example
WHERE id IN (
SELECT id - 1
FROM example
WHERE u_id = 2);
答案 3 :(得分:0)
最后找出了正确的sql查询。
SELECT * FROM table WHERE u_id = 1 AND (id = 4 OR id < 4) ORDER BY id DESC LIMIT 0,2
答案 4 :(得分:0)
如果你使用的是相当新版本的MySQL,你需要的是LAG()窗口函数:
SELECT id,
u_id,
LAG(id) OVER W AS prev_id
FROM MyTable
WINDOW w AS (PARTITION BY u_id ORDER BY id)
ORDER BY id, u_id;
它会产生如下结果:
id |u_id |prev_id
1 | 1 | null
2 | 1 | 1
3 | 2 | null
4 | 1 | 2
5 | 2 | 3
6 | 3 | null
您可以使用查询here。