我想根据一些搜索条件从表中检索行。我得到的结果必须符合这些标准,并应另外提供尽可能多样化的数据样本。具有相同搜索条件的查询应始终返回相同的样本。因此在查询中使用RAND()
是没有解决方案的。结果用于在PHP驱动的网站上显示。
示例
我有一张有住宿的桌子,例如酒店,住宿加早餐或露营地。对于每个住宿,还有额外的信息,如评级,预算,城市和地区。所以表格基本上是这样的:
| id | name | type | rating | budget | city | region |
| 1 | A Name | Hotel | 2 | 2 | New York | East |
| 2 | B Name | B&B | 3 | 2 | New York | East |
| 3 | C Name | Hotel | 4 | 3 | New York | East |
| 4 | A Name | Hotel | 3 | 4 | Chicago | Central |
| 5 | D Name | B&B | 4 | 3 | Chicago | Central |
| 6 | E Name | Hotel | 2 | 2 | Omaha | Central |
| 7 | F Name | Hotel | 5 | 4 | Omaha | Central |
| 8 | G Name | Camping | 2 | 4 | Yosemite | West |
我现在需要一个查询,例如从region='Central'
包含尽可能多的城市,尽可能多的住宿类型,便宜的住宿以及昂贵的住宿等等。我不需要一个数学上完美的解决方案,只需要一致的东西。
创意1
我可以多次查询表,使用几个不同的where子句并混合结果。但是多次查询是Web应用程序的一大缺陷。
创意2
我可以在插入数据时引入一个由随机值填充的附加列random
,然后执行order by random
。这个解决方案的缺点是随机是我想要完成的一个糟糕的启发式。