没有返回行时检索MySQL列名

时间:2014-09-09 22:16:24

标签: php mysql

想知道当查询结果没有返回任何行时,是否有办法让MySQL返回列名?问题是我们的系统有时会有多个大型查询:

SELECT * FROM table

SELECT table1.*, table2.field1, table2.field2

SELECT table1.field1 AS f1, SUM(table2.field1) AS f2

等。因此,只有在返回结果为空时获取列名的方法是解析查询,并尝试在information_schema表上运行查询。这是可能的,但会相当复杂。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

MySQL的一些PHP接口具有结果集元数据的功能,即使对于零行的结果集也应返回信息。

答案 1 :(得分:0)

您可以使用的一种技术是在查询上创建视图,然后使用视图名称查询information_schema

就是这样:

create view v_JustForColumns as
    <your query here>;

select *
from information_schema.columns
where table_name = 'v_JustForColumns';

drop view v_JustForColumns;

答案 2 :(得分:0)

尝试以下方法。这里用实际的模式名称替换YOUR_SCHEMA,用实际的表名替换YOUR_TABLENAME:

select column_name from information_schema.columns  
where not exists(select * from YOUR_SCHEMA.YOUR_TABLENAME) 
and  table_name='YOUR_TABLENAME';