如何找到查询中第一次出现的值的行号?
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 1
在 value1
上搜索,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
在 MySQL 中,如何找到值第一次出现的行号?
例如,如果我的查询 return 编辑的数据是
value1
value1
value1
value1
value2
value2
value1
我想 return 1
在 value1
上搜索,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