比较两个表并找到匹配的列

时间:2010-06-17 22:27:03

标签: mysql

我有两个表table1和table2,我需要编写一个select查询,它会列出两个表中存在的列。 (MySQL的)

我需要为不同的表(一次2个)做

这可能吗?

我尝试使用INFORMATION_SCHEMA.COLUMNS,但无法正确使用。

3 个答案:

答案 0 :(得分:13)

 SELECT a.COLUMN_NAME
 FROM INFORMATION_SCHEMA.COLUMNS a
 JOIN INFORMATION_SCHEMA.COLUMNS b
 ON a.COLUMN_NAME = b.COLUMN_NAME
 AND b.TABLE_NAME = 'table2'
 AND b.TABLE_SCHEMA = database() //or manually enter it
 WHERE a.TABLE_NAME = 'table1'
 AND a.TABLE_SCHEMA = database(); //or manually enter it

答案 1 :(得分:2)

如果有人需要相反的话:
查找一个表中存在但在另一个表中缺少的所有列:

 SELECT *
 FROM INFORMATION_SCHEMA.COLUMNS a 
 WHERE a.TABLE_NAME = 'craft_content'
 AND a.TABLE_SCHEMA = 'craftcms2'
 AND a.COLUMN_NAME NOT IN (
   SELECT b.COLUMN_NAME
   FROM INFORMATION_SCHEMA.COLUMNS b 
   WHERE b.TABLE_NAME = 'craft_content'
   AND b.TABLE_SCHEMA = 'craftcms'
 )

答案 2 :(得分:1)

是的,这是可能的,只需使用MySQL's SHOW COLUMNS语法从数组中的每个表中获取列,然后使用PHP's array_intersect()函数查找两者中的列。

相关问题