2010-06-17 116 views
3

我有两个表table1和table2,我需要编写一个select查询,它将列出两个表中存在的列。 (MySQL的)比较两个表并找到匹配列

我需要为不同的表(2在同一时间)

这是可能的吗?

我试过使用INFORMATION_SCHEMA.COLUMNS,但我无法弄清楚。

回答

12
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 
+0

神奇的Mr.Wrikken,像蛋糕一样工作 – Sharpeye500 2010-06-17 22:43:06

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' 
) 
相关问题