2011-03-27 12 views
5

Bunu nasıl açıklayabilirim bilmiyorum, bu örnekte çöp sorgularının yardımı olabilir.Sorunun var olup olmadığını kontrol etmek için sorguyu girin ve sonuç kümesini döndürün

SELECT if_exists(Fieldname) * FROM my table name 

Ben Fieldname alan mevcut olması durumunda veritabanının tüm satırları seçmek için çalışıyorum.

Eğer sen SHOW COLUMNS ifade kullanabilirsiniz

+0

Ne demek istediğini anlamıyorum. Açıklayabilir misin? –

+0

@Pekka, lütfen açıklamaya bakınız – mrN

+0

@downvoter, Lütfen reddetmeyi açıklayabilir misiniz? – mrN

cevap

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

Sen, bir boş satır alacak.

+0

Eğer alan dinamik olarak üretilirse, bu problemi evrensel olarak çözmez. – Ray

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 
+0

Bu sorguda bir hata var – mrN

+0

hangi hata dit olsun – Blackcom

+0

Tanımsız Sütun – mrN

0

Böyle bir şey gerekir:

Ayrıca ben bu çözüm buldu. Üzgünüz, sözdizimi yine de tamam olup olmadığını test edemem. O tabloda bu alanı yok eğer

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

Kullandığım bir sorgu: sütun yoksa sütun döndürmez. İhtiyaçlarınız için değiştirmek için fazla çalışma olmamalı.

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; 
2

düz PHP aşağıdaki kod sorunsuz çalışır:

$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; 
İlgili konular