【问题标题】:Compare Two tables in SQL and equals row set to 'True' in new Column比较 SQL 中的两个表并在新列中将行设置为“真”
【发布时间】:2021-01-31 07:03:48
【问题描述】:

有人能解释一下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 列必须为 true,否则为 false。

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

任何帮助将不胜感激

【问题讨论】:

    标签: mysql sql join datatable equals


    【解决方案1】:

    您可以使用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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2022-11-28
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        • 2013-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多