【问题标题】:How to compare row with a column?如何比较行和列?
【发布时间】:2014-10-16 18:15:07
【问题描述】:
create table TABLE1(
column1 varchar (100),
column2 varchar (100)
)
go
create table TABLE2(
column_for_compare varchar (100)
)
go
insert into TABLE2 values ('column1')
insert into TABLE2 values ('column2')
go

我想检查 TABLE2 中是否存在 TABLE1 列名称,如下所示: --这应该是将TABLE2中的行值与TABLE1中的列名进行比较

如果存在(从 TABLE2 中选择 column_for_compare)和 if exists(select column_name from syscolumn key join systable where table_name ='TABLE1') 开始 打印“找到匹配” 结束

我希望你能看到我在尝试什么......如果没有......如果会尝试更好地解释它

【问题讨论】:

    标签: sql tsql sap-iq


    【解决方案1】:

    您可以查询 USER_TAB_COLUMNS 表以获取列名称

    SELECT column_name
    FROM USER_TAB_COLUMNS
    WHERE table_name = 'TABLE1'
    

    然后将结果与 TABLE2 连接起来

    SELECT *
    FROM TABLE2, (SELECT column_name
                    FROM USER_TAB_COLUMNS
                    WHERE table_name = 'TABLE1') as cNames
    WHERE TABLE2.column_for_compare=cNames.column_name
    

    这将为您提供一个表,其中 table_1 中的列名称存在于 table_2 的行中

    【讨论】:

      【解决方案2】:

      此查询将仅返回 TABLE2 中作为 TABLE1 中的列的值。如果不更改查询,您将无法打印“找到匹配”,因为您需要遍历 TABLE2 中的每一行或更改查询以便对 TABLE2 中的所有值进行比较。

      SELECT
          *
      
      FROM
          TABLE2
          JOIN INFORMATION_SCHEMA.COLUMNS
              ON  TABLE2.column_for_compare = COLUMNS.COLUMN_NAME
      
      WHERE
          COLUMNS.TABLE_NAME = 'TABLE1'
      

      【讨论】:

        猜你喜欢
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 2017-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多