SQLステートメントでデータベースのフィールドの数を取得しますか?
質問
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
複数のスキーマが同じ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 **
所属していません StackOverflow