将列中的值除以查询中返回的行数。它可以在一个查询中完成吗?

时间:2012-02-06 17:13:23

标签: mysql

我可以使用单个查询将列中的值除以查询中返回的行数吗?

例如,我根据某些条件从表中选择一些数值:

select value from table where ...

假设它返回N行,我希望返回的值除以返回的行数:

select value / N from table where ...

可以使用多个查询完成(例如,在第一次查询之后,我查询行数并再次执行查询)。但它可以在一个查询中使用一些SQL技巧而不需要查询条件重复,这样可能复杂的实际选择(WHERE部分)只运行一次吗?

1 个答案:

答案 0 :(得分:0)

你可以在一个查询中完成它,但据我所知,使用mysql你必须重复这个条件:

select 
value/@cnt from 
table1 
INNER JOIN (select @cnt = count(*) 
 FROM table1 WHERE [the same condition as in main query]) ON (1=1)
WHERE condition

或者你可以

SELECT value/(SELECT COUNT(*) FROM table1 WHERE ...)
FROM table1 
WHERE ...

我认为优化器应为两个查询生成相同的执行计划。