我不知道这是否可行,但我已经搜索了用户,并且我想在每个打字后的字母上显示结果,所以我试图让搜索工作尽可能快,但我的野心也是我的知识很高。
我有users db
,relations (id, user_id, follower_id, status)
我使用LEFT JOIN
两次,首先是关注者,而不是跟随者。
所以我想做什么,我要把结果整理好,就像我首先想让那些用户关注并被追踪的人,而不仅仅是那些用户关注的人,而不是跟随用户的人,最后是其他人。我想将所有搜索限制为最多10行。如果有可能只在mysql中做某事?我已经在php中完成了这项工作,但这涉及到对数据库的许多查询。
如果有任何方法可以设置知道该行是什么条件,那么我也很有意思。
更新
我需要得到什么以及以什么顺序:
以下条件下的用户:
- 通过搜索查询&用户关注他们跟随他们。
- 通过搜索查询&用户关注。
- 通过搜索查询&关注用户的人。
- 通过搜索查询
醇>订单:
- 用户关注他们跟随他们。
- 用户关注。
- 关注用户的人。
- 他人。
醇>限制:0,10
我相信我无法简单地以特定的方式命令结果,所以我考虑使用子查询或更复杂的东西,但我的mysql知识太低,我不确定是否可以在一个查询,或者我只需要在每种条件下使用单独的查询。
答案 0 :(得分:0)
我没有测试它,但我会尝试这样的事情:
select distinct u.* from users u, relations r where u.id = r.user_id or u.id = r.follower_id order by u.id = r.user_id