如何通过单次SQL查询获取两个数据表的列名?
如何在单次SQL查询中获取两个数据表的列名?
你之前查询单个表列名的语句是有效的,但尝试用AND连接两个SELECT语句的写法不符合SQL语法,因此抛出了语法错误。下面提供两种正确的实现方式:
方法一:使用IN运算符匹配多个表名
直接在WHERE条件中指定需要查询的多个表名,一次获取所有目标表的列名:
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name IN ('table1', 'table2');
如果需要明确区分每个列属于哪个数据表,可以同时查询table_name字段:
SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name IN ('table1', 'table2');
方法二:使用UNION ALL拼接查询结果
通过UNION ALL将两个独立查询的结果集合并,适用于需要分别定义每个表查询逻辑的场景:
SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table1' UNION ALL SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table2';
- 若希望自动去除两个表中重复的列名,可以替换为
UNION(注意UNION会对结果去重,性能略低于UNION ALL) - 同样可以添加
table_name字段区分列的来源:
SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table1' UNION ALL SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'table2';
错误原因说明
你之前的写法错误在于用AND连接两个完整的SELECT语句——AND是用于WHERE子句中条件逻辑判断的运算符,不能用来拼接独立的查询结果集,因此触发了语法解析错误。
内容的提问来源于stack exchange,提问作者Shridhar
相关产品推荐
相关产品推荐

