我正在尝试运行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将始终不同。
我将非常感谢你对这一个的任何帮助,谢谢!
答案 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
希望它对你有所帮助。