限制mysql中的count查询?

alen0pnh  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(411)

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

SELECT *
FROM table_name
WHERE part_no IN ('abc123')

返回25行。现在我想计算一个特定列中满足“accepted”条件的数字,但结果仅限于最近的10个。我的方法是这样写:

Select Count(*)
FROM table_name
WHERE part_no IN ('abc123') AND lot IN ('accepted')
ORDER BY date DESC
LIMIT 10

我很难拿到订单并限制操作。我需要帮助,只是让它适当地限制,我可以从那里找出其余的。
编辑:我知道操作发生在只返回一行值的count上;但我放了第二个片段来展示我在思考过程中的困境。

eqfvzcg8

eqfvzcg81#

你的问题 SELECT 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')

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

o2rvlv0m

o2rvlv0m2#

select count返回一行,因此order by和limit对结果无效

相关问题