查询以检查字段是否存在,然后返回结果集

时间:2011-03-27 10:05:27

标签: mysql

我不知道如何解释它,可能是这个例子垃圾查询可以帮助。

SELECT if_exists(Fieldname) * FROM my table name

我只是在Fieldname字段存在时才尝试选择数据库的所有行。

你能帮帮我吗

6 个答案:

答案 0 :(得分:4)

SHOW columns from `yourtable` where field='yourfield'

如果您在该表中没有该字段,您将获得一个空行。

答案 1 :(得分:2)

普通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;

答案 2 :(得分:0)

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ‘you_table_name’ AND COLUMN_NAME = ‘FIELDNAME’)
 BEGIN
    select fieldname from your_table_name
 END

答案 3 :(得分:0)

您可以使用SHOW COLUMNS表达式。

我也找到了这个解决方案:http://snippets.dzone.com/posts/show/4663

答案 4 :(得分:0)

你需要这样的东西。抱歉,无法测试语法是否正常。

SELECT * FROM table WHERE EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=table AND column_name=column)

答案 5 :(得分:0)

这是我使用的查询:如果列不存在,则不返回列。 根据你的需要改变它应该不会有太多工作。

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;