MySQL - 选择匹配值的行计数,仅查询最后20个条目

时间:2015-03-15 14:30:45

标签: mysql bash

我正在尝试运行MySQL查询作为bash脚本的一部分,以查明最后19个条目是否都具有相同的值(如果是这样,则执行某些操作)。我有一个'id'行,每行都会自动递增,然后是包含整数值的行'number'。

我的想法是尝试下面但是这限制了返回到19的行数,因为计数只返回一行,这不起作用:

mysql --host=localhost --user=uname --database=dbname -s -N -e "select count(*) from table order by id desc limit 19"

我需要将实际计数本身限制为仅检查最后19行。我无法说“id = x to y”,因为表格会不断增长,因此最后19个id将始终不同。

我将非常感谢你对这一个的任何帮助,谢谢!

3 个答案:

答案 0 :(得分:2)

limit在您的查询中没有做任何事情。聚合首先发生,聚合所有行以产生一行。然后应用limit 19,这是没用的,因为只有一行。

要获取最近的19行,您需要一个子查询,因此以下内容最多可获得19个:

select count(*)
from (select t.*
      from table t
      order by id desc
      limit 19
     ) t;

如果您想获取某些列的值数,可能需要count(distinct)代替:

select count(distinct col)
from (select t.*
      from table t
      order by id desc
      limit 19
     ) t;

答案 1 :(得分:0)

使用子查询。

 SELECT COUNT(DISTINCT sq.number)  
  FROM
  (SELECT number FROM TABLE ORDER BY ID DESC LIMIT 19) as sq

答案 2 :(得分:0)

据我所知,你总是想要从表中得到最后19条记录,

select * 
from 'your table name'  
order by id desc
limit 19

如果你想要不同的值,那么输入:

select distinct(column name) 
from 'your table name' 
order by id desc
limit 19

希望它对你有所帮助。