到目前为止,我尝试了多种方法,我有一个大表(数千条记录),其中我有各种旅行,除了其他值之外,还有一些不同的国家,以及旅行的持续时间(以天为单位),我想随机选择给定数量的随机项目包含从给定行程中的随机选择,包含每个国家/地区的最短行程,但在某些国家/地区最短行程为 8 天,其他地方为 12 天,...等
| country | duration | price | departure | hotelname | otherData |
| A | 8 | 123 | 2013-06-19 | hotel A | blah blah |
| A | 15 | 234 | 2013-06-20 | hotel A | blah blah |
| A | 15 | 234 | 2013-06-20 | hotel B | blah blah |
| A | 15 | 234 | 2013-06-20 | hotel C | blah blah |
| B | 8 | 345 | 2013-06-21 | hotel D | blah blah |
| C | 12 | 456 | 2013-06-22 | hotel E | blah blah |
...
我需要构建一个随机数组,其中包含 6 个包含旅行选择的记录,试图最小化来自同一国家的更多结果的显示(但如果表中没有足够的不同国家,则允许)并为每个国家随机选择一些记录最低那个国家的持续时间。
问题是一些国家的最短行程是 8 天,其他地方是 11 天,所以我不能简单地说:
where days<9
也因为在赛季结束时可能会有很少的旅行导致没有足够的结果,我不能做:
group by country
我的想法是为每个国家/地区选择 6 条记录,使用 为该国家/地区提供最短的持续时间order by duration ASC
,然后让所有国家/地区的结果重新排序rand()
并选择前 6 条。