문제

SQL 문을 사용하여 데이터베이스에서 필드/항목 수를 어떻게 얻습니까?

도움이 되었습니까?

해결책

모든 테이블의 모든 필드를 MMM? 표준 (MSSQL, MySQL, Postgres)을 가정하면 information_schema.columns에 대한 쿼리를 발행 할 수 있습니다.

  SELECT COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 

또는 테이블별로 그룹화 :

  SELECT TABLE_NAME, COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 
  GROUP BY TABLE_NAME

다중 Schemas가 동일한 DB에 동일한 테이블 이름을 갖는 경우 스키마 이름도 포함해야합니다 (예 : DBO.Books, User.Books, Company.Books 등). 그렇지 않으면 잘못된 결과를 얻을 수 있습니다. 그래서 모범 사례는 다음과 같습니다.

SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
GROUP BY TABLE_SCHEMA, TABLE_NAME

다른 팁

이것을 시도하면, 이것은보기를 제외하고, 당신이보기를 원한다면 Where 조항을 남겨 두십시오.

  select count(*) from information_schema.columns c
join information_schema.tables t on c.table_name = t.table_name
and t.table_type = 'BASE TABLE'

이것이 당신이 필요한 것 같네요.

select CountOfFieldsInDatabase = count(*)
from   information_schema.columns

인터넷 검색을하는 다른 독자들에게만 ...

SQL이 아닌 솔루션이 몇 가지 있습니다. 사용자에게 유용 할 수 있습니다. 여기에 사용하는 2가 있습니다.

예 1 : 액세스 VBA :

'Microsoft Access VBA
Function Count_Fields(Table_Name As String) As Integer
    Dim myFieldCount As Integer
    Dim db As DOA.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset(Table_Name, dbOpenDynaset)
    myFieldCount = rs.Fields.Count
    'return the count
    Count_Fields = myFieldCount
    'tidy up
    Set rs = Nothing
    Set db = Nothing
End Function

예제 2 : PHP 5.1 :

    <?php
    // PHP5 Implementation - uses MySQLi.
    function countFields ($tableName) { 
    $db = new mysqli('myserver.me.com', 'user' ,'pass', 'databasename');
    if(!$db) {
        echo 'ERROR: Could not connect to the database.';
        } 
    else {
        $rs->$db->query("SELECT * FROM ".$tableName.");
        $fieldCount = $rs->field_count;
        }
    return $fieldCount;
?>

위의 오타를 실례합니다.

select count(column_name) from information_schema.columns 
where table_name = **name of your table here **
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top