我可以使用单个查询将列中的值除以查询中返回的行数吗?
例如,我根据某些条件从表中选择一些数值:
select value from table where ...
假设它返回N行,我希望返回的值除以返回的行数:
select value / N from table where ...
可以使用多个查询完成(例如,在第一次查询之后,我查询行数并再次执行查询)。但它可以在一个查询中使用一些SQL技巧而不需要查询条件重复,这样可能复杂的实际选择(WHERE部分)只运行一次吗?
答案 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 ...
我认为优化器应为两个查询生成相同的执行计划。