Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 三重连接sql_Mysql_Sql - Fatal编程技术网

Mysql 三重连接sql

Mysql 三重连接sql,mysql,sql,Mysql,Sql,在使用查询时,我希望从sql数据库中获得一些特定的数据。 我的第一个表包含我的应用程序的所有团队。(表1) 第二个表包含其他表之间的关系: 此表包含以下字段: 独一无二的 TeamUniqueId(表1中的uniqueId) 我想要一个内部连接的反面的数据: 因此,这提供了正确的数据 但是现在我想把这个数据和表3比较一下, 我想要所有与第三个表没有链接的数据 表3 1.唯一ID 2.TeamUniqueId(来自第一个表的uniqueId) 把它放在照片里 我想我可能会使用更暴力的方法:

在使用查询时,我希望从sql数据库中获得一些特定的数据。 我的第一个表包含我的应用程序的所有团队。(表1) 第二个表包含其他表之间的关系: 此表包含以下字段:

  • 独一无二的
  • 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;