首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用多对多关系连接两个表的Mysql查询

使用多对多关系连接两个表的Mysql查询
EN

Stack Overflow用户
提问于 2018-05-28 18:54:50
回答 3查看 38关注 0票数 0

我有三个名为Notes的表,另一个名为Tags的表,第三个是名为NoteTagsJoin的连接表,Join表包含两个外键:主Note和主标记id。我使用以下查询来获取tagId的所有备注:

代码语言:javascript
复制
SELECT * FROM notes INNER JOIN note_tag_join ON notes.entryId = note_tag_join.noteId WHERE note_tag_join.tagId =:tagId

并执行以下查询以获取所有标记:

代码语言:javascript
复制
SELECT * FROM tags INNER JOIN note_tag_join ON tags.tagId = note_tag_join.tagId WHERE note_tag_join.noteId =:noteId

如何在一个查询中仅使用Note id获取Note及其所有标签?

EN

回答 3

Stack Overflow用户

发布于 2018-05-28 19:05:17

您是否在寻找两个连接?

代码语言:javascript
复制
SELECT n.*, t.*
FROM notes n INNER JOIN
     note_tag_join nt
     ON n.entryId = nt.noteId INNER JOIN
     tag t
     ON t.tagId = nt.tagId
WHERE n..entryId = :noteId
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 19:48:13

代码语言:javascript
复制
SELECT * FROM table_name
LEFT JOIN table_name2 ON table_name.id = table_name2.id
LEFT JOIN table_name3 ON table_name2.id = table_name3.id
WHERE table_name.id = id;

将"id“更改为您正在使用的适当id。重要的是,连接中的id是一致的,否则它们之间将没有联系。

票数 0
EN

Stack Overflow用户

发布于 2018-05-28 21:06:37

如果要选择这3个表的字段,请执行以下操作:

代码语言:javascript
复制
SELECT (fields that you want to show) FROM tableA 
INNER JOIN tableB ON tableA.commonField = tableB.commonField 
INNER JOIN tableC ON tableB.commonField = tableC.commonField 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50564755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档