如何找到查询中第一次出现的值的行号?

How do I find the row number of the first occurrence of a value within a query?

在 MySQL 中,如何找到值第一次出现的行号?

例如,如果我的查询 return 编辑的数据是

value1
value1
value1
value1
value2
value2
value1

我想 return 1value1 上搜索,5 如果在 value2 上搜索。

这可能吗?我找不到关于它的任何文档。

在您的 select 语句中添加一个行号列。

输入

yourtable
samplefield
value1
value1
value1
value1
value2
value2
value1

代码

SELECT @n := @n + 1 RowNumber, t.*
FROM (SELECT @n:=0) initvars, yourtable t

输出

SQL Fiddle: 即将推出! SQL Fiddle 是错误的:(

感谢 lolka_bolka 和 this answer,我想出了以下解决方案。为了节省我编辑我的实际查询的时间,一些附加信息:我试图找到第一次出现的 post 类型,它不是 WordPress 中的附件:

SELECT `type_count` FROM (SELECT @s:=@s+1 type_count,`post_type` 
    FROM (SELECT @s:= 0) AS s, `wp_posts` 
    WHERE wp_posts.post_type IN ('post', 'attachment') 
    AND ((wp_posts.post_status = 'publish' OR wp_posts.post_status = 'inherit')) 
    AND wp_posts.post_mime_type NOT LIKE 'image/%' ORDER BY `ID` DESC) 
AS `type_counts` 
WHERE `post_type` != 'attachment' LIMIT 0,1