MySql:从id匹配的查询中获取行数

时间:2017-01-13 15:12:17

标签: php mysql

我有一个复杂的选择:

select id from table
  left join...
  left join... (a lot of joins)
where ... (a lot of ANDs and ORs)
order by... (a lot of orders)

我得到的结果如下:

1234
5565
7212
2212
etc.

我有一个属于结果集的id,如7212,并想知道结果集中哪一行与id匹配(从第0行开始,这将是我示例中的第2行)。

现在我正在读取所有数据并在php中进行比较,但我想知道是否有一个SQL语句为我做了这个,结果2在输入7212时。

实际上我想得到上一个和下一个id(第1行和第3行= 5565和2212),如果在一个查询中以某种方式可能会更好。

2 个答案:

答案 0 :(得分:1)

您可以选择数字行:

select @rownum:=@rownum+1 No, foo, bar from table, (SELECT @rownum:=0) r;

这可能与此处提出的问题重复:How to show sequential number in MySQL query result

答案 1 :(得分:1)

为每个选定的行添加auto_increment索引:

SELECT  
    @i:=@i+1 as index, 
    id 
FROM table, (SELECT @i:= 0) AS i
    LEFT JOIN...
    LEFT JOIN...(a lot of joins)
WHERE ... (a lot of ANDs and ORs)
ORDER BY... (a lot of orders)

给你这个:

index id
1     1234
2     5565
3     7212
4     2212