我不知道我该如何解释它,可能是这个示例垃圾查询可以提供帮助。查询以检查字段是否存在,然后返回结果集
SELECT if_exists(Fieldname) * FROM my table name
我试图选择只有Fieldname
字段存在的数据库的所有行。
你能帮我
我不知道我该如何解释它,可能是这个示例垃圾查询可以提供帮助。查询以检查字段是否存在,然后返回结果集
SELECT if_exists(Fieldname) * FROM my table name
我试图选择只有Fieldname
字段存在的数据库的所有行。
你能帮我
SHOW columns from `yourtable` where field='yourfield'
你会得到一个空行,如果你没有在表中字段。
如果该字段是动态生成的,这不会普遍解决问题。 – Ray 2014-02-19 21:59:05
可以使用SHOW COLUMNS表达。
而且,我发现这个解决方案:http://snippets.dzone.com/posts/show/4663
我可以使用显示列,但我从php运行查询,所以我正在寻找最短的过程 – mrN 2011-03-27 10:15:45
你需要这样的事情。对不起,不能测试语法是否正常。
SELECT * FROM table WHERE EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=table AND column_name=column)
这就是我使用的查询:如果列不存在,它将不返回任何列。 为了您的需要,它不应该做太多的工作来改变它。
SET @VAR_SQL := Concat('SELECT first_row',CONCAT(IFNULL((SELECT CONCAT(',',COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'my_table'
AND COLUMN_NAME = 'my_column'),'')),' FROM my_table;');
PREPARE QUERY_STATEMENT FROM @VAR_SQL;
EXECUTE QUERY_STATEMENT;
纯PHP下面的代码应该很好地工作:
$chkcol = mysql_query("SELECT * FROM `table_name` LIMIT 1");
$mycol = mysql_fetch_array($chkcol);
if(isset($mycol['column_name']))
$results = mysql_query("SELECT * FROM `table_name`");
else
$results = false;
我不明白你的意思。你能澄清吗? – 2011-03-27 10:07:16
@Pekka,请参阅解释 – mrN 2011-03-27 10:14:49
@downvoter,请您澄清downvote? – mrN 2011-03-28 07:54:18