【发布时间】:2015-11-15 02:25:10
【问题描述】:
是否可以在mysql表中找到一行的位置?
例如,如果我们有 mysql 查询
SELECT * FROM `table` WHERE `Date` > X ORDER BY `Date` DESC
这将选择在 X 之后创建的所有行,并根据它们的创建日期排列它们。现在,如果我知道其中一个行 ID,是否可以修改此查询代码,以便我知道它在什么位置在这个查询中。
我的意思是说查询给出了 5 行,而我知道其 ID 的行是其中之一,是否可以检查它在查询中的位置。我的意思是,是第 1 次、第 2 次、...、第 5 次吗?
我希望我清楚地解释了我的问题。
使用 Blizz 的建议我发现
SET @I=0; SELECT @I:=@I+1 AS `I`, `ID`, `From`, `Action`, `To`, `Value`, `Date` FROM `papers` WHERE `Action` = 'Review' GROUP BY `ID` ORDER BY `Date` DESC
做我想要的,但是它只在 localhost/phpmyadmin 中有效,当我在 localhost/mysite 中运行它时,会出现错误提示
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 'SELECT @I:=@rank+1 AS
rank,ID,From,Action,To,Value,DateFROM `' 在第 1 行
有人知道为什么会这样吗?
【问题讨论】:
-
希望这可以解决您的问题 [在 MYSQL 查询中获取行位置 [重复]][1] [MySQL 在 ORDER BY 中获取行位置][2] [1]:stackoverflow.com/questions/7057772/… [2]: stackoverflow.com/questions/3614666/…
-
@Blizz,你知道我的问题为什么会出现这个错误吗?
-
您的示例查询是2条语句,正常的mysql查询语句不会执行。您可以在选择初始化变量@I 时使用交叉连接重写它