连接表和多个值的SQL查询
发布时间:2020-12-12 06:39:59 所属栏目:MsSql教程 来源:网络整理
导读:所以我有三个表涉及我的问题,2个常规表和一个连接表,有很多,属于很多关系.它们看起来像这样: table1--id--datatable2--id--datatable1_table2--table1_id--table2_id 所以,我的问题是我如何查询(使用连接)表格中的一个项目中table1_table2中有一个或多个值的
所以我有三个表涉及我的问题,2个常规表和一个连接表,有很多,属于很多关系.它们看起来像这样:
table1 --id --data table2 --id --data table1_table2 --table1_id --table2_id 所以,我的问题是我如何查询(使用连接)表格中的一个项目中table1_table2中有一个或多个值的内容.例如: Table 1 +----------+ |id | data | +----------+ |1 | none | +----------+ |4 | match| +----------+ Table 2 +----------+ |id | data | +----------+ |1 | one | +----------+ |2 | two | +----------+ table1_table2 +----------------------+ |table1_id | table2_id | +----------------------+ |1 | 1 | +----------------------+ |4 | 1 | +----------------------+ |4 | 2 | +----------------------+ 我需要一个与表1行id 4匹配的查询,因为它有一个通过连接的链接到表2中的第1行和第2行.如果这很令人困惑,请问任何问题. 也许我有点不清楚,我使用table1_table2作为连接而不是来自.我需要确保它与表2中的1和2相匹配. 这是我到目前为止的查询… SELECT DISTINCT table1.id,table2.data FROM table1 LEFT JOIN table1_table2 ON table1.id = table1_table2.table1_id LEFT JOIN table2 ON table2.id = table1_table2.table2_id 我需要一个能够使表1中的条目与表2中的1和2匹配的位置. 我正在寻找的输出将是: +---------------------+ |table1.id|table2.data| +---------------------+ |4 |one | +---------------------+ |4 |two | +---------------------+ 解决方法如果您可以保证Table1_Table2表中没有重复项,则以下方法有效.也许你可以从这里开始并稍微细化一下.注意JOIN条件是如何工作的 – 将IN放在连接条件中的工作方式与将WH条件放在WHERE子句中的方式不同.我已经将哈希标记用于将代码插入SQL所需的值. SELECT Table1.id,COUNT(Table1_Table2.Table2_id) FROM Table1 JOIN Table1_Table2 ON (Table1_Table2.Table1_id = Table1.id AND Table1_Table2.Table2_id IN (#somelist#)) GROUP BY Table1.id HAVING COUNT(Table1_Table2.Table2_id) = (#length of somelist#) 哎呀 – 你已经按我建议的方式改变了你的问题,我忽略了你的编辑.但这应该让你开始,因为它返回你感兴趣的所有Table1 id. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |