我有两个表table1和table2,我需要编写一个select查询,它会列出两个表中存在的列。 (MySQL的)
我需要为不同的表(一次2个)做
这可能吗?
我尝试使用INFORMATION_SCHEMA.COLUMNS
,但无法正确使用。
答案 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()
函数查找两者中的列。