mysql - 根据表 2 中的单列返回表 1 的值
问题描述
我有 3 个正在使用的表,需要根据第二个表中单个列的值进行查询以从一个表中返回数据。
tbl_user
- ID
- 登录
- 经过
- 积极的
- MSCID
tbl_master
- ID
- 姓名
- 培训日期
- MSC单元
- 积极的
tbl_msc
- MSCID
- 名称
我当前的 SQL 语句:
SELECT
tbl_master.ID,
tbl_master.name,
tbl_master.training_date,
tbl_master.MSCUnit,
tbl_master.active,
tbl_user.mscID
FROM
tbl_master,
tbl_user
WHERE
tbl_master.active = 1 AND tbl_master.MSCUnit = tbl_user.mscID
存储在 tbl_msc.mscID 中的值是一个 varchar(11),它包含一个类似于 A00 或 A19 的字符串。这也是表中的主键。
tbl_user.mscID 中存储的值与 tbl_msc.mscID 中的值相匹配。存储在 tbl_master.UnitMSC 中的值也与 tbl_msc.mscID 的值相匹配。
我的目标是从当前登录的用户具有相同 mscID 的 tbl_master 返回所有记录。我遇到的问题是该语句返回 tbl_master 中的所有记录。
我尝试了几种不同的连接语句,但由于某种原因,我无法正确过滤。
我错过了一些东西。SQL 语句中的任何帮助将不胜感激。
谢谢,威尔
解决方案
你应该用join
s 来写这个。我不知道你怎么知道当前用户是谁,但想法是将三个表连接在一起:
SELECT m.ID, m.name, m.training_date, m.MSCUnit, m.active,
u.mscID
FROM tbl_master m JOIN
tbl_user u
ON m.MSCUnit = u.mscID JOIN
tbl_msc msc
ON msc.mscID = u.msc_ID
WHERE m.active = 1 AND msc.mscName = ?;
注意使用正确的、明确的、标准 JOIN
的语法和表别名。
推荐阅读
- python - 如何用空字典初始化类 - Python
- ubuntu - 我无法确认任何 api 正在通过 microk8s 中的 localhost 工作
- snowflake-cloud-data-platform - Snowflake - 删除 Schema 中的所有外键,可能使用 CTE 删除
- django - 如何在 VSCode 终端中激活 python 虚拟环境
- excel - 如何使用 VBA 获取具有关联名称的 excel 图像?
- r - 如何从数据框中选择值仅存在于 2 列中的行
- android - 如何从 Room 数据库中提取嵌入式实体的数据和相关 POJO 的列表
- kotlin - 让 SSL 证书在 API 中工作(添加自定义 SSL 证书)
- python - 使用 Python selenium 查找 href 链接
- android - 在 viewModelScope 生命周期之后运行协程