MySQL合并查询需求:同时获取表主键列名与全部列名
合并MySQL查询获取主键与所有列名集合
可以通过条件聚合的方式将两个查询合并为单条语句,一次获取指定表的主键列名和所有列名集合:
SELECT GROUP_CONCAT(CASE WHEN COLUMN_KEY = 'PRI' THEN COLUMN_NAME END) AS PK, GROUP_CONCAT(COLUMN_NAME ORDER BY ORDINAL_POSITION ASC) AS all_columns FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'default_t' AND TABLE_NAME = 'table1';
逻辑说明
- 用
CASE语句筛选出标记为主键(COLUMN_KEY = 'PRI')的列,再通过GROUP_CONCAT聚合得到主键列名集合 - 对所有列按
ORDINAL_POSITION(字段在表中的顺序)排序后,用GROUP_CONCAT聚合得到完整的列名集合 - 仅需一次查询
INFORMATION_SCHEMA.COLUMNS表,同时返回两个结果字段
内容的提问来源于stack exchange,提问作者vasu
相关产品推荐
相关产品推荐

