在我的一个网站上,我想向我们的用户展示他们所在地区的人。理想情况下,这将是他们所在城市的用户。但是,有些城市几乎没有用户,所以我也想展示一下他们所在州的用户。但是,有些州几乎没有用户,所以我也想展示一下他们国家的用户。
我该怎么做呢?
大声思考,这就是我想出的:
1)首先向他们展示他们所在城市的用户,
2)第二个用户在他们的状态,和
3) 在其国家/地区的其余用户中排名第三
所有结果都在同一组结果中,上面的每个子集都按注册日期排序。这样,如果他们所在的城市有很多用户,他们会首先看到他们。如果没有很多,那么他们会自动看到处于他们状态的用户。如果他们所在州的用户不多,他们会自动看到他们所在国家/地区的用户。因此,无论他们所在的城市或州是否有很多用户,他们都会看到很多结果。
如果那是正确的方法,那么我将如何进行查询?我会UNION
根据注册日期对上述每个问题进行 3 个不同的查询吗?我是否会使用CASE
声明先按城市、州、国家/地区排序,每个子集按注册日期排序?还有什么办法?
如果以上不是最好的方法,那么请描述一个更好的算法以及我将如何查询它。