比较 SQL 中的两个表,并在新列中将行设置为 'True'

Compare Two tables in SQL and equals row set to 'True' in new Column

谁能解释一下 SQL 查询 TableResult 中的以下结果。

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

有两个表TableATableB,两个表中的函数列是唯一的。 TableA 中的全部数据应该在 ResultTable 中,如果 TableB 函数等于 TableA 函数中,则 ResultTable Compare 列必须为真,否则为假。

任何人都可以建议如何在 SQL 中获得预期的结果。

如有任何帮助,我们将不胜感激

你可以用 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 

参见demo

使用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