Mysql 三重连接sql
在使用查询时,我希望从sql数据库中获得一些特定的数据。 我的第一个表包含我的应用程序的所有团队。(表1) 第二个表包含其他表之间的关系: 此表包含以下字段:Mysql 三重连接sql,mysql,sql,Mysql,Sql,在使用查询时,我希望从sql数据库中获得一些特定的数据。 我的第一个表包含我的应用程序的所有团队。(表1) 第二个表包含其他表之间的关系: 此表包含以下字段: 独一无二的 TeamUniqueId(表1中的uniqueId) 我想要一个内部连接的反面的数据: 因此,这提供了正确的数据 但是现在我想把这个数据和表3比较一下, 我想要所有与第三个表没有链接的数据 表3 1.唯一ID 2.TeamUniqueId(来自第一个表的uniqueId) 把它放在照片里 我想我可能会使用更暴力的方法:
- 独一无二的
- TeamUniqueId(表1中的uniqueId)
但是现在我想把这个数据和表3比较一下, 我想要所有与第三个表没有链接的数据 表3 1.唯一ID 2.TeamUniqueId(来自第一个表的uniqueId) 把它放在照片里
我想我可能会使用更暴力的方法:
select uniqueid
from ((select uniqueid, 1 as t1, 0 as t2, 0 as t3
from table_1
) union all
(select uniqueid, 0 as t1, 1 as t2, 0 as t3
from table_2
) union all
(select uniqueid, 0 as t1, 0 as t2, 1 as t3
from table_3
)
) t
group by uniqueid
having (sum(t1) = 1 or -- in table1
sum(t2) = 1 -- or table2
) and
count(*) = 1; -- in only one table
在某些数据库中,还可以使用set函数。大概是这样的:
((select unique1
from table_1
union
select unique1
from table_2
) minus -- or except
(select unique1
from table_1 t1
intersect
select unique1
table_2 t2
)
) minus -- or except
select unique1
from table_3;
也请看,嗯,谢谢下次使用,这不起作用,我仍然得到链接到表3的字段。我认为我的问题放错了,我将删除这一个。它比这张照片更复杂,抱歉浪费时间。谢谢你的反应@蒂姆维德。这两种机制都不可能实现。做了更多的研究并找到了解决方案,你的代码改变了我对这个问题的思考方式!谢谢
((select unique1
from table_1
union
select unique1
from table_2
) minus -- or except
(select unique1
from table_1 t1
intersect
select unique1
table_2 t2
)
) minus -- or except
select unique1
from table_3;