mysql - 合并三个表只处理一个

标签 mysql sql

我在游戏中使用 SQL 编写了这三个表:

user_stats 与主键 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 对于 1 个用户有多行,因为您可以购买多个项目。作为一个对 SQL 完全陌生的人,我该怎么做?

最佳答案

对所有三个表进行连接并获取您想要的特定数据,如下所示

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

由于所有表都有一个公共(public)列userid,您也可以使用NATURAL JOIN

select *
from user_stats
natural join user_item
natural join user_details

关于mysql - 合并三个表只处理一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24352181/

相关文章:

mysql - 来自同一个表的多个外键

php - 返回结果表单查询 - 仅显示在一行上

mySQL 复合键、主键、唯一键和对复合键的引用

sql - 如何在 VBA 逗号分隔列表中仅将引号放在字符串(而不是数字)上?

php - 如何使用 php 插入后更新房间状态

mysql - Codeigniter - 在 WHERE 子句中格式化日期

sql - 在 postgresql 中四舍五入列值

sql - 无法按日期时间排序设置行号

sql - 为什么 LIKE '%' 与 '' 或 NULL 不匹配

php - 同一个表mysql中的多个where?