我想在使用查询时从我的sql数据库中获得一些特定的数据。
我的第一个表包含我的应用程序的所有团队。(表1)
第二个表包含另一个表之间的关系:
此表包含以下字段:
唯一的
TeamUniqueId(表1的唯一id)
我想要一个内部连接的反面的数据:
mysql - 三联SQL-LMLPHP

Select * From table_1
Full outer join table_2
on table_1.UniqueId = table_2.table_1UnqiueId
Where table_1.UniqueId IS NULL
OR table_2.UniqueId IS NULL

所以这提供了正确的数据。
但现在我想把这些数据和表3比较一下,
我要所有与第3张表无关的数据
表三
一。唯一ID
2。TeamUniqueId(来自第一个表的uniqueId)
把它放进照片里
mysql - 三联SQL-LMLPHP

最佳答案

我想我可以用更野蛮的方法:

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;

10-08 15:59