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 的表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

回答你问题的第二部分

<<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 回答