我有两张桌子。如果至少有一个值相交,我想返回true:
1,2,7
和7,4,0
- 7个相交,返回true
1,2,3
和4,5,6
- 没有交叉点,返回false
这样做的最佳方式是什么?
答案 0 :(得分:2)
试试这个,使用内连接
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'
答案 1 :(得分:1)
试试这个:
select distinct 'true'
from mytable
where column1 in (select column2 from mytable)
如果匹配,您将获得一行' true'。
如果没有匹配,您将不会获得任何行。
答案 2 :(得分:1)
使用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