Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查MySQL中以前的记录?_Mysql_Sql_Optimization - Fatal编程技术网

如何检查MySQL中以前的记录?

如何检查MySQL中以前的记录?,mysql,sql,optimization,Mysql,Sql,Optimization,我要分类的序列号。这意味着产出将减少 有人能帮忙吗?一个非常好的解决方案是使用用户定义的变量,例如 +----+--------+----------+--------+ | ID | Name | Category | Count | +----+--------+----------+--------+ | 1 | Cat | Animal | 1 | | 2 | Loin | Animal | 2 | | 3 | Dog | Anim

我要分类的序列号。这意味着产出将减少


有人能帮忙吗?

一个非常好的解决方案是使用用户定义的变量,例如

+----+--------+----------+--------+
| ID |  Name  | Category | Count  |
+----+--------+----------+--------+
|  1 | Cat    | Animal   |      1 |
|  2 | Loin   | Animal   |      2 |
|  3 | Dog    | Animal   |      3 |
|  4 | Red    | Color    |      1 |
|  5 | Hen    | Bird     |      1 |
|  6 | Parrot | Bird     |      2 |
+----+--------+----------+--------+

基本上,您需要(分区)上的行数的等价物,您可以使用自连接和聚合:

select
id,
name,
category,
rn as `count`
from (
  select
  id,name,category,
  @rn:= if(category = @prev_category,@rn+1,1) as rn,
  @prev_category:= category
  from my_table,(select @rn:=1,@prev_category:= null)x
  order by category,id
)x

输出:

SELECT a.id, a.name, a.category, count(*) AS `Count`
FROM tab a
JOIN tab b 
  ON a.Category= b.Category AND a.ID >= b.ID
GROUP BY a.id, a.name, a.category;

我在查询检查中尝试使用上一个变量@s:=0,但问题出现在两个以上的名称中。
SELECT a.id, a.name, a.category, count(*) AS `Count`
FROM tab a
JOIN tab b 
  ON a.Category= b.Category AND a.ID >= b.ID
GROUP BY a.id, a.name, a.category;
╔════╦════════╦══════════╦═══════╗
║ ID ║  Name  ║ Category ║ Count ║
╠════╬════════╬══════════╬═══════╣
║  1 ║ Cat    ║ Animal   ║     1 ║
║  2 ║ Loin   ║ Animal   ║     2 ║
║  3 ║ Dog    ║ Animal   ║     3 ║
║  4 ║ Red    ║ Color    ║     1 ║
║  5 ║ Hen    ║ Bird     ║     1 ║
║  6 ║ Parrot ║ Bird     ║     2 ║
╚════╩════════╩══════════╩═══════╝