MySQL不支持分析(IE:ROW_NUMBER),这是您要使用的输出结果。使用:
SELECt x.id, x.ref, x.data, x.rank AS `order` FROM (SELECt t.id, t.ref, t.data CASE WHEN @ref = t.ref THEN @rownum := @rownum + 1 ELSE @rownum := 1 END AS rank, @ref := t.ref FROM YOUR_TABLE t JOIN (SELECT @rownum := NULL, @ref := -1) r ORDER BY t.id, t.ref, t.data) x
通常,这将需要单独的语句来声明@rownum和@ref变量,但是如果像在示例中所看到的那样定义了MySQL,MySQL将使您脱身。
如果
ref值不匹配,则CASE语句会将@rownum值重置为1 。否则,@rownum递增1。@rownum值与之关联的列由该
ORDERBY子句确定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)