限制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。这还帮助我了解了如何有效地使用内部查询,再次感谢。