数据仓库服务 GAUSSDB(DWS)-DWS查询时结果不一致的常见场景和解决方法:子视图/子查询中使用排序
时间:2025-04-17 08:12:54
子视图/子查询中使用排序
场景:
创建表test和视图v后,子查询中使用排序查询表test,出现查询结果不一致。
1 2 3 4 5 6 |
CREATE TABLE test(a serial ,b int); INSERT INTO test(b) VALUES(1); INSERT INTO test(b) SELECT b FROM test; … INSERT INTO test(b) SELECT b FROM test; CREATE VIEW v as SELECT * FROM test ORDER BY a; |
问题SQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SELECT * FROM v limit 1; a | b ---+--- 3 | 1 (1 row) SELECT * FROM (select * from test order by a) limit 10; a | b ----+--- 14 | 1 (1 row) SELECT * FROM test order by a limit 10; a | b ---+--- 1 | 1 (1 row) |
原因分析:
对于子视图和子查询中order by是无效的。
解决方法:
不建议在子视图和子查询中使用order by,若要保证结果有序,需在最外层查询中使用order by。
support.huaweicloud.com/dws_faq/dws_03_2107.html
推荐文章