2017-12-29 21 views
1

2つのテーブルがあります。 、無交差点行うための最善の方法は何false2つの列が交差した値を持つ場合はtrueを返します。

を返す - 7つの交差true

1,2,34,5,6を返し、 -

1,2,77,4,0を:私は、少なくとも1つの値が交差する場合はtrueを返したいですこの?

+1

に参加しますかSQL Server/oracle/mysql?それに応じてタグを更新してください。 – shahkalpesh

+0

例または列で説明したように、行レベルのデータがありますか? – Susang

+0

列レベルの値 –

答えて

1

はこれを試してみてください:

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

一致がある場合、あなたが「本当」で1行を取得します。
一致するものがない場合は、行は表示されません。

1

full joinと条件付き集計で行う方法の1つです。

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 

注:これはfull joinをサポートしていないため、MySQLでは機能しません。ただし、動作は複製できます。

もう1つの方法は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 
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'

関連する問題