2011-03-27 5 views
5

어떻게 설명 할 수 있을지 모릅니다.이 예제는 가비지 쿼리가 도움이 될 수 있습니다.필드가 존재하는지 확인한 다음 결과 집합을 반환하십시오.

SELECT if_exists(Fieldname) * FROM my table name 

나는 Fieldname 필드가 존재하는 경우에만 데이터베이스의 모든 행을 선택하려합니다.

당신은 당신은 SHOW COLUMNS 표현을 사용할 수 있습니다

+0

난 당신이 무슨 뜻인지 이해가 안 돼요. 당신은 명확히 할 수 있습니까? –

+0

@ 페카, 설명을 참조하십시오 – mrN

+0

@downvoter, downvote를 명확히 할 수 있습니까? – mrN

답변

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

당신은 빈 행을 얻을 것이다.

+0

필드가 동적으로 생성되면 문제가 보편적으로 해결되지 않습니다. – 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

이 쿼리에서 오류가 발생했습니다 – mrN

+0

어떤 오류가 나옵니까 – Blackcom

+0

정의되지 않은 열 – mrN

0

당신이 뭔가를해야

또한 나는이 솔루션을 발견했다. 죄송합니다. 구문이 괜찮은지 테스트 할 수 없습니다. 당신이 그 테이블에서 해당 필드를 해달라고하면

SELECT * FROM table WHERE EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=table AND column_name=column) 
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; 
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; 
관련 문제