【问题标题】:How to select a random row from a Pervasive PSQL table如何从 Pervasive PSQL 表中选择随机行
【发布时间】:2018-07-31 22:00:16
【问题描述】:

Pervasive PSQL(特别是)中,使用sql select语句,如何从没有数字ID的表中选择随机行?

【问题讨论】:

  • 你使用的是什么版本的 PSQL?
  • 我使用的是版本 11 和 Service Pack 3。

标签: sql random pervasive-sql


【解决方案1】:

似乎适用于我使用 PSQL v11.30。

create table chartest (f1 char (10), f2 char(10), f3 char(10));
insert into chartest values ('a','a','a');
insert into chartest values ('b','b','b');
insert into chartest values ('c','c','c');
insert into chartest values ('d','d','d');
insert into chartest values ('e','e','e');
insert into chartest values ('f','f','f');
select top 1 * from chartest order by newid()

我跑了几次并得到:

<<<<<<<<<<<<<<<<<<<<<<<<
f1           f2           f3        
==========   ==========   ==========
e            e            e         
1 row was affected.
>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<
f1           f2           f3        
==========   ==========   ==========
c            c            c         
1 row was affected.
>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<
f1           f2           f3        
==========   ==========   ==========
b            b            b         
1 row was affected.
>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<
f1           f2           f3        
==========   ==========   ==========
f            f            f         
1 row was affected.
>>>>>>>>>>>>>>>>>>>>>>>>

【讨论】:

  • 从逻辑上讲,你明白为什么会这样吗? newid() 的 order 到底是什么意思?
  • 按 rand() 排序似乎也有效。我想知道幕后到底发生了什么,哪个更好。我猜它只是为每一行生成一个随机数,然后按该随机数排序。你也是这么想的吗?
  • Mirtheil,你也可以看看this question 吗?没有其他人回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2021-07-03
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多