2012-02-07 4 views
1

자동으로 생성 된 SQL 데이터베이스이 있습니다.테이블의 두 번째 레지스터의 다섯 번째 필드를 얻는 방법은 무엇입니까?

필자는 필드의 이름을 모르고 필드의 값을 알지 못합니다. 나는 단지 등록해야하는 번호와 그 레지스터의 필드 수를 알고 있습니다. 나는 테이블 데이터베이스의 "표"의 레지스터의 다섯 번째 필드를 취득해야하는 경우

예를 들어, 내가하는 SQL 쿼리를해야합니까?

+0

'레지스터'는 데이터베이스 환경에서 사용되는 용어가 아닙니다 (DB2를 사용하지 않는 한 테이블의 일부가 아닌 SQL 세션의 속성을 참조). '행'을 의미하려고합니까? –

+0

어떻게 MySQL 데이터베이스에 액세스합니까? 어떤 프로그래밍 언어를 사용하여 데이터베이스에 액세스합니까? 당신은'mysql _ *()'함수, PDO, 추상화 라이브러리 (있는 경우)를 사용하고 있습니까? 대답은 이러한 질문에 달려 있습니다. – Crontab

답변

1

데이터베이스의 테이블에있는 행은 공식적으로 순서가 지정되지 않지만 순서에 관계없이 저장됩니다. SQL에서 테이블의 열을 위치별로 참조하는 방법은 없습니다. 너는 란의 이름을 알아야한다.

테이블 이름을 알고 있으므로 시스템 카탈로그를 조사하여 테이블의 열을 알아낼 수 있으므로 테이블의 두 번째 열 이름을 알 수 있습니다 (단일 열 테이블이 아닐 경우).

그러나 테이블의 스키마를 모르는 경우 데이터를 쿼리하는 방법으로 의미있는 작업을 수행 할 수 없습니다. 당신은 질의가 무엇을 할 것인지 알기 위해 컬럼이 무엇을 의미 하는지를 알아야합니다.

분명히 테이블에 대한 쿼리를 실행할 수 있습니다 (이후에 열 이름을 아는 경우). 그러면 두 행의 데이터를 수집 할 수 있습니다. 두 번째 행은 당신이 쫓고있는 행입니다.

...

당신이 당신의 데이터베이스 액세스 언어는 배열의 각 행의 값을 사용하면 행을 반환하는 경우 작동 사용할 수있는 반 속임수있다

- DBI와 펄 또는 PHP 같이가, 또는 ...

SELECT * FROM Table1; 

이, 그리고 당신의 fetch 작업이 배열로 *가 나타내는 값을 반환 할 수 있습니다 (많은 열이 있는지가 가정, 열 다섯 포함) 모든 데이터를 수집, 당신은 볼 수 두 번째 행에 대한 배열의 다섯 번째 요소 값으로 데이터를 볼 수 있습니다. 많은 SQL DBMS에서, 당신도 다섯 번째 열을 기준으로 주문하는 시대에 뒤 떨어진 표기법을 사용할 수 있습니다 (I 구체적으로 MySQL을 모르는) :

SELECT * FROM Table1 ORDER BY 5; 

5 여기에 결과 집합하는 다섯 번째 열을 참조, 단일 테이블에서 모든 열을 선택하면 테이블의 다섯 번째 열을 의미합니다.

그러나 시각 장애인처럼 장기간 실행하면 우스운 제안입니다. 데이터베이스를 현명하게 사용할 수 있으려면 스키마와 그 해석을 이해해야합니다.

0

당신은 PHP (또는 선택)를 통해 그것을 할 수 없습니다

$i=1; 
while($row = mysql_fetch_row($res)) 
{ 
if ($i == 2) 
{ 
    echo $row[4]; 
} 

$i++; 
} 
0

이 아마도 당신이 데이터베이스에 액세스 할 수 있습니다? 당신은 할 수 없습니다 :

SHOW CREATE TABLE Table1; 

당신이 다음 쿼리에서 사용할 수있는 필드의 이름을 제공해야합니다 반환 된 열의 순서.

1

당신이 시도 할 수 :

SELECT * 
FROM information_schema.COLUMNS 
WHERE information_schema.COLUMNS.TABLE_SCHEMA = '<DATABASENAME>' 
AND information_schema.COLUMNS.TABLE_NAME = '<TABLENAME>' 
ORDER BY information_schema.COLUMNS.ORDINAL_POSITION ASC 

이 당신에게 열 이름과 유형을 포함하여 테이블 메타 데이터를 제공한다.

관련 문제