Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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_Count_Limit - Fatal编程技术网

限制MySQL中的计数查询?

限制MySQL中的计数查询?,mysql,sql,count,limit,Mysql,Sql,Count,Limit,我试图做一个简单的测试,从表中提取特定零件号的信息,例如: SELECT * FROM table_name WHERE part_no IN ('abc123') 这将返回25行。现在我想在特定列中计算满足“接受”条件的数量,但结果仅限于最近的10个。我的方法是这样写: Select Count(*) FROM table_name WHERE part_no IN ('abc123') AND lot IN ('accepted') ORDER BY date DESC LIMIT 10

我试图做一个简单的测试,从表中提取特定零件号的信息,例如:

SELECT *
FROM table_name
WHERE part_no IN ('abc123')
这将返回25行。现在我想在特定列中计算满足“接受”条件的数量,但结果仅限于最近的10个。我的方法是这样写:

Select Count(*)
FROM table_name
WHERE part_no IN ('abc123') AND lot IN ('accepted')
ORDER BY date DESC
LIMIT 10
我很难拿到订单,也很难限制操作。我需要帮助,只是把它适当地限制,我可以从那里找出其余的


编辑:我知道操作发生在只返回一行值的计数上;但是我放了第二个剪辑来显示我在思考过程中的困境。

您的查询
选择Count(*)FROM…
将始终只返回一行

你到底想做什么还不是100%清楚,但是如果你想知道最后10个中有多少被接受,你可以使用一个子查询,比如:

SELECT COUNT(*) FROM (
    SELECT lot
    FROM table_name
    WHERE part_no IN ('abc123')
    ORDER BY date DESC
    LIMIT 10
)
WHERE lot IN ('accepted')
内部查询将返回零件abc123的10个最近的行,然后外部查询将统计接受的行


还有其他解决方案(例如,您可以让内部查询输出一个字段,当部件不被接受时为0,当部件被接受时为1,然后求和)。根据您使用的确切方言/数据库,您可能还有更优雅的选项。

Select count返回一行,因此ORDER BY和LIMIT不会对结果起作用。

IN()仅使用一个值时没有任何意义。这就是
=
的含义,其中零件号='abc123'和批次='accepted'A
选择计数(*)…
将只返回一行计数,因此订单号和限额完全是浪费there@RiggsFolly对我知道他们被浪费了,但我正试图找出限制和秩序可以不做任何事情。我只是想用上面的片段来说明我在思考过程中遇到了什么问题,而这似乎不像用括号固定那么简单。是的,这就解决了。你理解我的意图,非常感谢你的帮助。我在运行和理解子查询时遇到了困难,因为在过去的MySQL版本中,我遇到了错误,说我不能在子查询中使用LIMIT。这还帮助我了解了如何有效地使用内部查询,再次感谢。