我有一个名为categories的表,其中包含ID(long),Name(varchar(50)),parentID(long)和shownByDefault(boolean)列.
该表包含554条记录.所有显示的ByDefaultValues都是'false'.
当我执行'select id,name from categories'时,pg返回所有类别,orderer按其id返回.
然后我更新表的一些行('更新类别set shownByDefault where parentId = 1'),更新OK.
然后,当我尝试执行第一个返回所有类别的查询时,他们返回的是一个非常奇怪的命令.
添加'order by'我没有问题,但由于我使用JPA来获取此值,所以任何人都知道问题是什么或者是否有办法解决这个问题?
那不是问题.SQL SELECT返回的行的顺序是未定义的,除非它具有ORDER BY
.您获得它们的顺序通常受它们存储在表中的顺序和/或语句使用的索引的影响.
因此,依赖于该顺序而不使用ORDER BY
是一个非常非常糟糕的主意.
如果您按某种顺序需要它们,只需指定它.
表是一组行而不是一系列行很重要.
来自文档:
如果指定了ORDER BY子句,则返回的行按指定的顺序排序.如果未给出ORDER BY,则以系统发现最快生成的顺序返回行.