比较 SQL 中的两个表,如果列值相等,则将输出列设置为“True”

问题描述 投票:0回答:2

有人可以导出并解释

TableResult
中以下结果的 SQL 查询吗?

TableA                     TableB                    TableResult

Id | Function              Id | Function              Id | Function | Compare
---|----------             ---|----------            ----|----------|---------
1  | code1                 1  | code1                 1  | code1    | true
2  | code2                 2  | code4                 2  | code2    | false
3  | code3                 3  | code5                 3  | code3    | false
4  | code4                                            4  | code4    | true

有两张桌子,

TableA
TableB
。 每个表中的
Function
列都是唯一的。

TableA
中的全部数据应包含在
ResultTable
中。如果
TableB
Function
等于
TableA
函数,则
ResultTable
Compare
列必须为 true;否则就是假的。

如何在 SQL 中达到预期的结果?

sql mysql join equality
2个回答
2
投票

你可以用

EXISTS
来做到这一点:

select a.*,
  exists (select 1 from TableB b where b.function = a.function) compare
from TableA a  

或:

select a.*,
  case 
    when exists (select 1 from TableB b where b.function = a.function) then 'true'
    else 'false'
  end compare
from TableA a 

查看演示


1
投票

使用

LEFT JOIN
并测试是否存在匹配。

SELECT a.*, IF(b.id IS NULL, 'false', 'true') AS compare
FROM tableA AS a
LEFT JOIN tableB AS b ON a.function = b.function
© www.soinside.com 2019 - 2024. All rights reserved.