我不知道我該如何解釋它,可能是這個示例垃圾查詢可以提供幫助。查詢以檢查字段是否存在,然後返回結果集
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