Mysql select查询直到达到条件
Mysql select query until reach the condition
假设我的用户 table 中有用户列表,如下所示。我需要从我的 table 中找到用户数,直到 userid
等于 100。
所以这里的答案是 (3)。但是我怎样才能找到这个 MySQL 查询。有什么想法吗?
userid name
---------------
10 aaa
30 bbb
100 ccc
60 ddd
这是实现您期望的解决方法之一。
SET @row_number:=0;
SELECT A.row_number FROM (
SELECT Userid, name, @row_number:=@row_number+1 AS row_number
FROM UserDetail
) AS A
WHERE A.Userid = 100;
如果 UserId
不是唯一 ID 并且它可以重复,您可以添加 ORDER BY
和 LIMIT 1
SET @row_number:=0;
SELECT A.row_number FROM (
SELECT Userid, name, @row_number:=@row_number+1 AS row_number
FROM UserDetail
) AS A
WHERE A.Userid = 100
ORDER BY A.row_number
LIMIT 1;
给定数据的示例执行:
--DROP TABLE UserDetail;
CREATE TABLE UserDetail (Userid INT, name VARCHAR (50));
INSERT INTO UserDetail (Userid, name) VALUES
(10 , 'Aaa'),
(30 , 'Bbb'),
(100, 'Ccc'),
(60 , 'ddd');
SET @row_number:=0;
SELECT A.row_number FROM (
SELECT Userid, name, @row_number:=@row_number+1 AS row_number
FROM UserDetail
) AS A
WHERE Userid = 100;
这在 MySql 中很难做到,因为数字的 'first' 实例很难确定。
解决此问题的一种方法是创建行号,然后选择 Userid = 100 的最小行号
select min(row_number) from
(
SELECT @rownum:=@rownum + 1 as row_number,
p.*
FROM p,
(SELECT @rownum := 0) r
) g
where userid = 100
假设我的用户 table 中有用户列表,如下所示。我需要从我的 table 中找到用户数,直到 userid
等于 100。
所以这里的答案是 (3)。但是我怎样才能找到这个 MySQL 查询。有什么想法吗?
userid name
---------------
10 aaa
30 bbb
100 ccc
60 ddd
这是实现您期望的解决方法之一。
SET @row_number:=0;
SELECT A.row_number FROM (
SELECT Userid, name, @row_number:=@row_number+1 AS row_number
FROM UserDetail
) AS A
WHERE A.Userid = 100;
如果 UserId
不是唯一 ID 并且它可以重复,您可以添加 ORDER BY
和 LIMIT 1
SET @row_number:=0;
SELECT A.row_number FROM (
SELECT Userid, name, @row_number:=@row_number+1 AS row_number
FROM UserDetail
) AS A
WHERE A.Userid = 100
ORDER BY A.row_number
LIMIT 1;
给定数据的示例执行:
--DROP TABLE UserDetail;
CREATE TABLE UserDetail (Userid INT, name VARCHAR (50));
INSERT INTO UserDetail (Userid, name) VALUES
(10 , 'Aaa'),
(30 , 'Bbb'),
(100, 'Ccc'),
(60 , 'ddd');
SET @row_number:=0;
SELECT A.row_number FROM (
SELECT Userid, name, @row_number:=@row_number+1 AS row_number
FROM UserDetail
) AS A
WHERE Userid = 100;
这在 MySql 中很难做到,因为数字的 'first' 实例很难确定。
解决此问题的一种方法是创建行号,然后选择 Userid = 100 的最小行号
select min(row_number) from
(
SELECT @rownum:=@rownum + 1 as row_number,
p.*
FROM p,
(SELECT @rownum := 0) r
) g
where userid = 100