有一个包含3种类型记录的位置表(见下文)。我只需要选择记录类型='g'行。
我想将数据 Package 在一个循环中(即5次),但如何按位置\u id随机洗牌整行,使它们在循环的每次迭代中以不同的顺序出现?或许,将行粘贴到一个数组中并洗牌数组?
注意,我不想混乱的列,我希望行保持得体。将来可能会增加更多的地点。
CREATE TABLE locations AS
SELECT level AS location_id,
'Door ' || level AS location_name,
CASE round(dbms_random.value(1,3))
WHEN 1 THEN 'A'
WHEN 2 THEN 'T'
WHEN 3 THEN 'G'
END AS location_type
FROM dual
CONNECT BY level <= 25;
SELECT * from tour_detail
Order by tour_id, tour_time
TOUR_ID TOUR_TIME LOCATION_ID
1 06212020 00:10:25 2
1 06212020 00:21:05 18
1 06212020 00:30:33 11
1 06212020 00:40:51 17
1 06212020 00:52:13 4
1 06212020 01:01:42 2
1 06212020 01:07:52 11
我们有一个访问控制系统,当你滑动卡片时,它会以mmddyyy hh24:mi:ss格式记录卡片编号、位置标识、访问日期。
一些人想建立一个巡更系统。它将访问日期与巡更详细信息日期进行比较。如果在一定的标准内,比如说+2分钟或-2分钟,这意味着警卫准时,如果gt或lt 2分钟,我们记录一个早或晚,如果gt或lt 5分钟或没有访问历史记录,我们记录一个没有显示。
我被要求收集一些测试数据。如您所见,巡更详细记录包含mmddyyyyy hh24:mi:ss,因此我正在考虑将巡更详细记录更改为每小时一分钟一次,但我对此没有多少经验。
2条答案
按热度按时间gjmwrych1#
因此它们在循环的每次迭代中以不同的顺序出现
这是毫无意义的。您正在向表中插入行。行(在rdbms表中)不是按任何特定顺序存储的。
但是,您可以在从该表中进行选择时对它们进行排序,为此,必须使用
order by
条款。在选择时,请查看这是否有帮助:
wr98u20j2#
假设你有一张5人的table
ID
s这将生成行的随机顺序输出
如果你重复这个陈述,你会得到不同的(随机)结果
因此,只需在循环中重新设置查询或执行以下操作