1

次のようなテーブルがあります::

id  || name     || Desg         || Sal  || deptId
1   ||ajay      ||MD            ||999   ||1
2   ||Kaushal   ||Engg          ||100   ||2
3   ||Vidhi     ||HR            ||5000  ||3
4   ||Sonu      ||SSP           ||200   ||1
5   ||Jay       ||Asst Manager  ||120   ||3
6   ||Uvi       ||Utra          ||450   ||5

id はプライマリ列です。これは name を持つ 1 つのテーブルpersonです。主キー列(ここではid)の値を取得したい。私のjavaメソッドは、テーブル名と where 句を受け取り、プライマリ列の値の ArrayList を返します。問題は、テーブル名に基づいて、どの列がプライマリ列であるかを決定する必要があることです。値を与えることができるクエリはありますか::

<<Part of Query to get values of primary column key>> where sal > 150 & deptId != 1(そのメソッドが受け取る Where 句)

4

2 に答える 2

3

ここINFORMATION_SCHEMAに記載されているように、データベース メタデータはテーブルから抽出できます。

あなたが見ているテーブルは次のようになると思いますcolumns

SELECT    COLUMN_NAME
FROM      INFORMATION_SCHEMA.COLUMNS
WHERE     TABLE_SCHEMA = '<<your schema name>>'
  AND     TABLE_NAME = '<<your table name>>'
  AND     COLUMN_KEY = 'PRI'

ただし、これは単純なケースのみです。

適切なインデックス分析のために、statisticsテーブルを参照できます。(ややあいまいな) メモリから、インデックス名またはタイプを使用して、インデックスが主キー インデックスであるかどうかを判断できます。

主キーの列名を取得したら、それに基づいて別のクエリを簡単に作成できます。

言い換えれば(未テスト):

String prim_colm = getPrimaryKeyColumn (tableName);
String newQuery = "select " + prim_colm + " from " + tableName";

次に実行しnewQueryます。

于 2012-08-20T12:57:14.320 に答える
-2

あなたの質問の2番目の部分に答えるには

<<Part of Query to get values of primary column key>>

使用する...

SELECT <column name> FROM <table name> WHERE....

<column name>/<table name> は、どこから取得するかを決める場所です。データベースのメタデータをクエリするか、スイッチを使用するだけです。

于 2012-08-20T12:58:20.907 に答える