比较 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
有两个表TableA和TableB,两个表中的函数列是唯一的。
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
谁能解释一下 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
有两个表TableA和TableB,两个表中的函数列是唯一的。 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