限制 MySQL 中的计数查询?
Limiting the count query in MySQL?
我正在尝试做一个简单的测试,我从 table 中提取特定零件号的信息:
SELECT *
FROM table_name
WHERE part_no IN ('abc123')
这returns 25行。现在我想计算特定列中满足“接受”条件的数量,但结果仅限于最近的 10 个。我的做法是这样写:
Select Count(*)
FROM table_name
WHERE part_no IN ('abc123') AND lot IN ('accepted')
ORDER BY date DESC
LIMIT 10
我很难让 ORDER BY 和 LIMIT 操作正常工作。我可以使用帮助来适当地限制它,我可以从那里找出其余部分。
编辑:我知道操作是在 COUNT 上进行的,其中只有 returns 一行有一个值;但是我放了第二个片段来显示我在思考过程中卡住了什么地方。
您的查询 SELECT Count(*) FROM ...
将始终 return 恰好一行。
不是 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')
内部查询将 return 部分 abc123 最近的 10 行,然后外部查询将计算接受的行。
还有其他解决方案(比如你可以让内部查询输出一个字段,不接受部分为0,接受部分为1,然后求和)。根据您使用的确切 dialect/database,您可能还有更优雅的选择。
Select 计算 returns 一行,因此 ORDER BY 和 LIMIT 对结果不起作用
我正在尝试做一个简单的测试,我从 table 中提取特定零件号的信息:
SELECT *
FROM table_name
WHERE part_no IN ('abc123')
这returns 25行。现在我想计算特定列中满足“接受”条件的数量,但结果仅限于最近的 10 个。我的做法是这样写:
Select Count(*)
FROM table_name
WHERE part_no IN ('abc123') AND lot IN ('accepted')
ORDER BY date DESC
LIMIT 10
我很难让 ORDER BY 和 LIMIT 操作正常工作。我可以使用帮助来适当地限制它,我可以从那里找出其余部分。
编辑:我知道操作是在 COUNT 上进行的,其中只有 returns 一行有一个值;但是我放了第二个片段来显示我在思考过程中卡住了什么地方。
您的查询 SELECT Count(*) FROM ...
将始终 return 恰好一行。
不是 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')
内部查询将 return 部分 abc123 最近的 10 行,然后外部查询将计算接受的行。
还有其他解决方案(比如你可以让内部查询输出一个字段,不接受部分为0,接受部分为1,然后求和)。根据您使用的确切 dialect/database,您可能还有更优雅的选择。
Select 计算 returns 一行,因此 ORDER BY 和 LIMIT 对结果不起作用