Return 如果两列有相交值则为真

Return true if two columns have intersected values

我有两张桌子。如果至少有一个值相交,我想 return 为真:

1,2,77,4,0 - 7 个交叉点,return true

1,2,34,5,6 - 没有交集,return false

这样做的最佳方法是什么?

试试这个:

select distinct 'true'
from mytable
where column1 in (select column2 from mytable)

如果有匹配项,您会得到一行 'true'。
如果没有匹配项,您将不会获得任何行。

一种方法是使用 full join 和条件聚合。

select max(case when t1.val=t2.val then 'true' else 'false' end) as intersect_or_no
from tbl1 t1
full join tbl2 t2 on t1.val=t2.val

注意:这在 MySQL 中不起作用,因为它不支持 full join。但是,可以复制该行为。

exists的另一种方式。

SELECT coalesce(
              (SELECT 'true'
               FROM tbl1 t1
               WHERE EXISTS
                   (SELECT 1
                    FROM tbl2 t2
                    WHERE t1.val=t2.val)),'false') AS intersect_or_no

试试这个,使用内部连接

select case when exists ( select 1 from TableA as A inner join TableB as B on B.colA = A.colA) then 'TRUE' else 'FALSE' end as 'Intersects'