从表名获取主键的值

时间:2012-08-20 12:53:17

标签: java mysql

我的表格如下::

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是主列。这只是一个名为person的表。 我想获取主键列的值(此处为id)。 我的java方法会收到表格名称& where子句将返回主列值的ArrayList。现在的问题是,基于表名,应该确定哪个列是主列。有没有可以给出值::

的查询

<<Part of Query to get values of primary column key>> where sal > 150 & deptId != 1(方法将接收的Where子句)

2 个答案:

答案 0 :(得分:3)

可以从INFORMATION_SCHEMA表中提取数据库元数据,如记录here

我认为您要查看的表格为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

答案 1 :(得分:-2)

回答问题的第二部分

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

使用...

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

其中&lt;列名&gt; /&lt;表名&gt;来自你决定解决的地方。查询数据库元数据或仅使用开关。