我想制作存储过程,但我不知道什么应该是正确的方法,或者这是否可以在 MySQL 中完成。
让我向您介绍我的问题。假设我有一个包含这样列的表:
TABLE A
id | Hotel | city_name | region_name | country
1 | A | Amsterdam | North-Holland | Netherlands
2 | B | Amsterdam | North-Holland | Netherlands
3 | C | Leiden | North-Holland | Netherlands
4 | D | Katwijk | North-Holland | Netherlands
5 | E | Leiden | North-Holland | Netherlands
6 | F | Katwijk | North-Holland | Netherlands
每次执行此查询时,我只想获得 3 个结果,并且需要按以下顺序创建结果:
- 如果有 3 个或更多城市(在这种情况下用户选择我们可以选择阿姆斯特丹),
city_name=Amsterdam
则返回阿姆斯特丹的随机 3 个城市 - 如果阿姆斯特丹的记录少于 3 条,则返回任何具有阿姆斯特丹的记录 + 返回随机记录,
region=North-Holland
但返回的记录总数应始终为 3(例如:我们有 2 条记录,其中city= Amsterdam
+ 我们采用一条随机记录来自region=North Holand;
示例 2:我们有一个记录city=Amsterdam
+ 我们有 2 个随机记录 whereregion="north Holland"
)
用 SQL 可以做到这一点吗?或者我应该在 php 中获取所有记录,然后遍历每条记录?
我可能需要在过程中传递 2 个参数(city_name,region)。
到目前为止,我已经尝试了一些基本的 SQL 查询,但我无法让它工作。