2014-10-16 57 views
1
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 

我想檢查表1的列名錶2中存在,是這樣的: - 這應該表2中列名在TABLE1如何比較行與列?

是否存在被比較的行值(選擇TABLE2 column_for_compare)和 如果存在(選擇SYSCOLUMN鍵列名加入SYSTABLE在表格名=「TABLE1」) 開始 打印「找到匹配」 結束

我希望你能看到我嘗試...如果不是...如果將嘗試更好地解釋它

回答

1

您可以查詢USER_TAB_COLUMNS表,以獲得collumn名

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 

連接的結果,這將讓你在collumn名稱的表table_1存在於table_2中的行中

0

此查詢只會返回TABLE1中TABLE1中列的值。您無法在不更改查詢的情況下查找PRINT'Match Found',因爲您需要迭代TABLE2中的每一行或更改查詢,以便對TABLE2中的所有值進行比較。

SELECT 
    * 

FROM 
    TABLE2 
    JOIN INFORMATION_SCHEMA.COLUMNS 
     ON TABLE2.column_for_compare = COLUMNS.COLUMN_NAME 

WHERE 
    COLUMNS.TABLE_NAME = 'TABLE1'