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