在PL / SQL中获取两个表的公共字段

时间:2015-07-14 14:56:24

标签: sql oracle

假设 Table A Table B 有各种字段。在 Table A Table B 之间获取公共字段的简便方法是什么?我想在这些表上进行内连接,但我不知道常见字段是什么。

请注意,这是在PL / SQL中。当我列出 A. B. 时,我会在下拉菜单中获取每个表的字段名称列表。但我想得到共同的领域。

2 个答案:

答案 0 :(得分:0)

这取决于“共同领域”是什么意思
如果要获取两个表中名称相同的所有列,则可以使用此查询:

SELECT t1.column_name
FROM user_tab_columns t1
JOIN user_tab_columns t2
ON t1.COLUMN_NAME = t2.COLUMN_NAME
/* 
   AND t1.DATA_TYPE = t2.DATA_TYPE
   AND t1.DATA_LENGTH = t2.DATA_LENGTH
*/
WHERE t1.table_name = 'A'
  AND t2.table_name = 'B'
  ;

演示:http://sqlfiddle.com/#!4/2b662/1

但是如果您查看上面演示中的表格,您会看到表格A有一个名为X的列,数据类型为VARCHAR2,而表B也有一个名为X但列为INT的列。

如果要获取具有相同名称,相同数据类型和相同长度的所有列,请取消注释上述查询中的相应条件。

答案 1 :(得分:0)

意思是这样的:

TableA has 2 columns: Id and Name. 
TableB has 2 columns: Name and PhoneNumber 

查询:

SELECT  A.Id, A.Name, B.PhoneNumber 
FROM    TableA A, TableB B 
WHERE   A.Name = B.Name; 

编辑:

如果您想知道列表中的列名是什么,我相信您可以使用DESC TableA。然后你得到一个列名列表。您可以将这些用于与另一个列表进行比较,例如从TableB开始。