我在一个游戏中有这三个SQL表:
user_stats with主键id
| userid | kills | deaths |
|--------|-------|--------|
| 10 | 5 | 4 |
user_items(用户已购买的物品),具有常规的整数主键id -当用户购买新物品时,添加一行
| id | userid | itemid |
|----|--------|--------|
| 1 | 10 | 1 |
| 2 | 10 | 2 |
| 3 | 10 | 3 |
user_details(用户已配置的项)主键userid
| userid | item1 | item2 |
|--------|-------|-------|
| 10 | 1 | 3 |
我只想处理一个表,但是当用户启动时我需要所有的信息。我想将这三个表合并为一个表,但是user_items对于一个用户有多个行,因为您可以购买多个项目。作为一个对SQL完全陌生的人,我该怎么做呢?
在所有三个表上执行join
,并获得您想要的特定数据,如下所示
select us.*
from user_stats us
inner join user_item ui on us.userid = ui.userid
inner join user_details ud on us.userid = ud.userid
因为所有的表都有一个共同的列userid
,你也可以使用NATURAL JOIN
select *
from user_stats
natural join user_item
natural join user_details