Heim  >  Artikel  >  Backend-Entwicklung  >  Mysql根据从表排序主表的问题?

Mysql根据从表排序主表的问题?

WBOY
WBOYOriginal
2016-06-06 20:27:431434Durchsuche

应用场景大概是这样,一个问答社区,用户可以发布提问和回答。现在需要根据从表对主表进行排序。

用户的个人信息我放在U表
跟用户相关的数据统计的信息都放在B表,里面存着如发布文章数、发布的问题数、回答的数、回答被采纳的数量、文章被推荐的数量、粉丝数、自己关注的用户数、关注的标签数。

现在需要查询B表中回答数量最多的前10条记录,同时从U表中获取这些用户的个人信息。

请问这个查询应该如何写比较好?或者这种表关系设计是否合理?

另外我有个思路是把B表里的这些字段放到用户的U表里,但感觉字段会多出8,9个,会有什么问题么。

回复内容:

应用场景大概是这样,一个问答社区,用户可以发布提问和回答。现在需要根据从表对主表进行排序。

用户的个人信息我放在U表
跟用户相关的数据统计的信息都放在B表,里面存着如发布文章数、发布的问题数、回答的数、回答被采纳的数量、文章被推荐的数量、粉丝数、自己关注的用户数、关注的标签数。

现在需要查询B表中回答数量最多的前10条记录,同时从U表中获取这些用户的个人信息。

请问这个查询应该如何写比较好?或者这种表关系设计是否合理?

另外我有个思路是把B表里的这些字段放到用户的U表里,但感觉字段会多出8,9个,会有什么问题么。

这就是最简单的表联合啊
SELECT u.xxx, ..., b.xxx, ...
FROM u JOIN b ON (u.id = b.uid)
ORDER BY b.answers DESC
LIMIT 10;

这个设计是没问题的,保证了常变化的数据与不常变化的数据的物理分离

如果冗余a表的字段到b表 用户资料更新的时候 你需要更新两个表

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn