Oracle数据库允许以下查询:
select col1 from table order by col2;
select count(col1) from table group by col2;
看来order / group by子句中的列不需要在select子句中。但是,tutorialspoint: SQL - ORDER BY Clause告诉我其他情况。以上只针对Oracle具体吗?
答案 0 :(得分:3)
教程是完全错误的。
order by
可以包含查询对象中的任何列,无论它们是否在选择列表中。
group by
走另一条路。选择列表中的任何非聚合列都必须包含在group by
。
答案 1 :(得分:0)
我不认为GROUP BY
中提到的列必须位于SELECT
中。但是,如果有GROUP BY
,那么SELECT
中未汇总的列必须位于GROUP BY
中!无论如何,请参阅SQL Fiddle demo here了解MySQL。所以你可以看到它不是特定于Oracle的。
答案 2 :(得分:0)
如果考虑结果的生成顺序,很明显您不需要从查询条件返回的结果中选择相同的列。
就订单而言,首先从表中选择记录,然后按照您在查询中指定的列对它们进行排序,然后您可以选择希望在结果或输出中看到的列或属性。
希望它有所帮助!