mysql和hive中分别有一个stu学生表, 里面有一些相同的信息, 现在我们查看mysql和hive查询中的一点区别
当id和name是一一对应的时候, mysql可以只对其中一个进行分组, 然后取两列, 但是hive中是不可以的, 例如:
此时, name列既没有分组, 也没有聚合但是是可以取出来的, 如果同一个id对应不同的name, 就会选改组id中name最前面的一个name, 但是hive的命令更严格一些, 是不允许的
第二点不同就是, mysql中的group by的字段是可以是select 中的函数运算后的字段的别名, 例如:
如果对mysql的执行顺序有所了解的应该清楚, group by是在select之前执行的,怎么能使用select中的别名呢, 其实这是mysql优化器起到的作用, 上面的语句在执行的时候还是会将group by后age_grp还原成 age%10 的, 而hive中并没有对这样的写法进行优化, 所以是不可以的