mysql - 如何在 JOIN 查询后在结果表中显示连接表的主键?

Posted

技术标签:

【中文标题】mysql - 如何在 JOIN 查询后在结果表中显示连接表的主键?【英文标题】:mysql - How to display primary key from junctional table in result table after JOIN query? 【发布时间】:2018-11-14 16:47:30 【问题描述】:

我有一个关系数据库模型。因为我正在学习这种数据库设计的 mysql 查询,所以我知道基础知识,但我遇到了问题。

这些是我的桌子:

 hgs_word_types           hgs_meanings
 +----+-----------+       +----+-----------+
 | id | word_type |       | id | meaning   |
 +----+-----------+       +----+-----------+
 | 1  | noun      |       | 1  | man       |
 +----+-----------+       +----+-----------+

 junc_meaning_word_type
 +----+------------+--------------+
 | id | meaning_id | word_type_id |
 +----+------------+--------------+
 | 1  | 1          | 1            |
 +----+------------+--------------+ 

这是我的查询:

SELECT hgs_word_types.word_type, hgs_meanings.meaning
FROM junc_meaning_word_type
JOIN hgs_word_types ON junc_meaning_word_type.word_type_id = hgs_word_types.id
JOIN hgs_meanings ON junc_meaning_word_type.meaning_id = hgs_meanings.id

我得到这样的结果:

+---------------------+
| meaning | word_type |
+---------+-----------+
| man     | noun      |
+---------+-----------+

如何在此查询的结果中将junc_meaning_word_type.id 显示为第三列?如何制作这样的东西:

+----+---------------------+
| id | meaning | word_type |
+----+---------+-----------+
| 1  | man     | noun      |
+----+---------+-----------+

感谢每一个帮助。

【问题讨论】:

【参考方案1】:

您只需选择所需的列即可。在这种情况下,您还需要将junc_meaning_word_type.id 添加到SELECT 子句中。

此外,建议在多表查询的情况下使用Aliasing,以使代码清晰(可读性)并避免模棱两可的行为。

SELECT junc.id, 
       typ.word_type, 
       mean.meaning
FROM junc_meaning_word_type AS junc
JOIN hgs_word_types AS typ
  ON junc.word_type_id = typ.id
JOIN hgs_meanings AS mean 
  ON junc.meaning_id = mean.id

【讨论】:

它就像魅力一样。感谢您对别名的帮助和通知,将在不久的将来了解它。

以上是关于mysql - 如何在 JOIN 查询后在结果表中显示连接表的主键?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得 MySQL JOIN 的结果,其中记录符合联接表中的值标准?

MySQL数据库之连接查询

MySql的join(连接)查询 (三表 left join 写法)

MySql INNER JOIN三表联查性能如何提升

Mysql 连接的使用

MySQL 连接的使用