使用JOIN时,如何避免结果集中的冗余数据字段?

Ash*_*ary 5 sql redundancy join

以下联接应该为具有特定状态的用户检索用户信息及其消息:

SELECT * FROM user, message WHERE message.user_id=user.id AND user.status=1
Run Code Online (Sandbox Code Playgroud)

问题是结果集中某个用户的所有行都包含重复有关该用户的相同数据的冗余列(从用户表中检索的那些字段),只有来自消息表的字段包含非冗余信息.像这样的东西:

user.id  username email            message.id  subject
1        jane     jane@gmail.com   120         Notification 
1        jane     jane@gmail.com   122         Re:Hello 
1        jane     jane@gmail.com   125         Quotation
2        john     john@yahoo.com   127         Hi jane
2        john     john@yahoo.com   128         Fix thiss 
2        john     john@yahoo.com   129         Ok
3        jim      jim@msn.com      140         Re:Re:Quotation
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,许多数据都是冗余的,我们不希望先找到用户,然后在循环结构或类似的东西中查看他们的消息.应不惜一切代价避免导致微查询的循环.

我不关心我的程序输出,在UI中处理得很好.我也许通过返回此查询的结果产生的网络流量可能会大大减少,如果我能够设法消除与该用户相关的所有行中的用户数据的重复.

REW*_*REW 1

在直接的 sql 查询中,如果将它们保留为单个查询,则不会出现这种情况。如果您以编程方式打印此信息,那么您将按用户 ID 排序,并且仅在用户 ID 更改时重新打印该信息。