mysql - 如何根据其他两个表的左连接获取表的内容
问题描述
我有一张categories
桌子和一张files
桌子。有一个category_record_mm
用于存储关系的表。我想获取文件的类别,因为我已经写了一个JOIN
声明,但是 JOIn 抱怨files
. uid
不是有效的列。我实际想要的是,如果 category_record_mm
. foreign_uid
等于某个id。这就是我写的:
SELECT * FROM `categories`
LEFT JOIN `category_record_mm` ON `category_record_mm`.`foreign_uid` = `files`.`uid`
WHERE (`category_record_mm`.`foreign_uid` = 123 )
解决方案
您缺少 1 JOIN
,介于categories
and之间的那个category_record_mm
这就像有 3 个城镇,A
和B
,在 和C
之间有一座桥,在A
和之间有B
另一个。如果不使用和之间的桥梁,你就无法从到B
C
A
C
A
B
SELECT * FROM `categories`
LEFT JOIN `category_record_mm` ON `category_record_mm`.`categories_uid` = `categories`.`uid`
LEFT JOIN `files` ON `category_record_mm`.`foreign_uid` = `files`.`uid`
WHERE (`category_record_mm`.`foreign_uid` = 123 )
categories_uid
是引用表categories
和的外键categories
。uid
作为主键categories
推荐阅读
- python - 如何使用 python 读取文本文件并将特定单词保存到 csv 或其他文本文件中
- wifi - 不能在 Airgeddon 中使用 Evil Twin Attack 吗?
- arrays - 将列表/数组的元素乘以python中的数字的函数
- flutter - 如何修复“使用不包含 AutoRouter 的上下文请求的 AutoRouter 操作。” 在颤振?
- flutter - 从对话框访问提供程序以获取 Flutter 钩子
- sql - 排除具有数字字符的行,仅在行首
- java - 3D 旋转扭曲立方体
- javascript - 如何使用处理程序使用缩放功能?
- flutter - 如何在导航栏中添加顶行 - Flutter
- ruby-on-rails - 何时锁定在导轨中的对象上释放?