mysql - 基于多个条件获取Many 2 Many关系的记录
问题描述
我正在使用 MYSQL 数据库,其中有以下 3 个表,其中 table1 和 table2 具有多对多关系,并且映射存储在 table3 中。
表格1:
id key value
1 Application java
2 Application erp
3 Application sap
4 DB mysql
5 DB oracle
6 DB sql
7 DB postgres
表2:
id data type
1 HTML UI
2 JAVA Backend
3 JavaScript UI
4 CSS UI
5 Query DB
6 Procedure DB
7 Function DB
表3(映射):
id Table1_id Table2_id
1 1 2
2 1 1
3 1 3
4 1 6
5 2 1
6 2 2
7 3 6
8 4 5
9 4 7
10 5 5
11 5 6
12 5 7
13 6 5
14 6 6
15 7 7
问:我想要基于 key 和 value 的结果,它应该从 table2 返回公共数据。
例如:如果用户通过 (key = application and value = java) and (key = db and value = sql)
然后它应该返回以下结果。
Key Value Data Type
Application java Procedure db
query db Procedure db
解决方案
使用连接
select key,value,data,type from table_mapping m join
table1 t1 on m.Table1_id=t1.id
join table2 t2 on m.Table2_id=t2.id
where
(key,value) in ( ('application','java'),
('query','db')
)
推荐阅读
- mongodb - mongo db - 将值投影到向量中
- splunk - 如何计算 splunk 搜索结果中的事件总数?
- reactjs - Preact 是否有 create-react-app 替代方案?
- c# - File.WriteAllBytes 执行而不创建文件
- java - 程序应在用户确认后循环回数据输入,并在用户确认后终止
- php - 仅在溢出时启用滚动条
- c# - System.ArgumentException:'不支持关键字:'attachdbfilename'。
- javascript - 在 JEST 和 vue-test-utils 中模拟 window.document
- botframework - 如何从 microsoft team sdk 读取标签信息?
- vba - 如果为真,使用 IF 语句推送 Next 语句