数据库表 mybatisplus中我需要将四张表通过关系表获取到信息,例如 用户表 朋友表 家庭表 公司表 关系表 通过用户表的用户id 获取到 用户表 朋友表 家庭表 公司表的 所有信息 在一个sql语句内完成
时间: 2023-09-05 22:06:48 浏览: 86
可以使用 MySQL 的 JOIN 语句来实现这个功能。具体而言,可以使用 INNER JOIN 将用户表和关系表联合起来,然后再使用 LEFT JOIN 将朋友表、家庭表和公司表分别连接到上述联合结果中,最后选择需要的字段即可。
例如,假设用户表的表名为 user,朋友表的表名为 friend,家庭表的表名为 family,公司表的表名为 company,关系表的表名为 relationship,且它们的字段如下:
user 表:
| 字段名 | 类型 |
|-------|------|
| id | int |
| name | varchar |
| ... | ... |
friend 表:
| 字段名 | 类型 |
|-------|------|
| id | int |
| user_id | int |
| friend_id | int |
| ... | ... |
family 表:
| 字段名 | 类型 |
|-------|------|
| id | int |
| user_id | int |
| ... | ... |
company 表:
| 字段名 | 类型 |
|-------|------|
| id | int |
| user_id | int |
| ... | ... |
relationship 表:
| 字段名 | 类型 |
|-------|------|
| id | int |
| user_id | int |
| ... | ... |
则可以使用以下 SQL 语句来获取用户及其相关信息:
```
SELECT u.*, f.*, c.*, fa.*
FROM user u
INNER JOIN relationship r ON u.id = r.user_id
LEFT JOIN friend f ON f.user_id = u.id
LEFT JOIN family fa ON fa.user_id = u.id
LEFT JOIN company c ON c.user_id = u.id
WHERE u.id = ?
```
其中,? 是用户的 ID,用于限定查询结果。这条 SQL 语句会返回一个包含用户信息、朋友信息、家庭信息和公司信息的结果集。
阅读全文