我尝试过使用' Order by'如下:
select fieldA,fieldB,fieldC,fieldD from testfilter where fieldA ='000009000002'order by fieldA,fieldB,fieldC,fieldD;
但是,这会产生如下的无序输出:
000009000002 7212 023 653
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 24
000009000002 9999 058 25
000009000002 9999 058 299
000009000002 9999 058 399
000009000002 9999 058 99
000009000002 9999 058 99
000009000002 9999 058 99
000009000002 9999 058 99
可能是什么原因?
注意:我使用的是Hive 0.10。
答案 0 :(得分:2)
如果我没有错,似乎您将所有列的数据类型保存为字符串。
所以数据的排序正在发生,但正如字符串那样,也就是按字典顺序发生。
000009000002 7212 023 653
//一个小组
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 159
000009000002 9999 058 24
000009000002 9999 058 25
000009000002 9999 058 299
000009000002 9999 058 399
000009000002 9999 058 99
000009000002 9999 058 99
000009000002 9999 058 99
000009000002 9999 058 99
//第二组
此处前三列的值相同,但最后一列按字典顺序排列。
当1小于2时,首先是159,然后是24,依此类推......
因此您可以将数据类型修改为int
希望它有所帮助...... !!