使用表名未知的列值从表中检索某些字段

时间:2012-12-21 06:11:41

标签: mysql sql servlets

我正在尝试从jsp中的用户动态获取产品的成本和itemno。我正在使用三个表中的数据,用户可以从中选择产品。所以我所知道的将是可以出现在这三个表中的任何一个表中的产品名称,所以基本上我不知道表名。我将产品传递到servlet,我想在其中显示产品及其costitemno。我使用了以下查询,但只收到错误消息

ResultSet rs=st.executeQuery
("SELECT * FROM indi.COLUMNS WHERE column_name ='" +  previousItems + "');");

其中inde是模式名称,而previousitem是我在jsp中从用户动态获得的产品名称。我收到错误消息,因为sql语法错误。以下是错误消息

  

javax.servlet.ServletException:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
          表'indi.columns'不存在

2 个答案:

答案 0 :(得分:1)

您可以通过此查询表名称:

SELECT
    `TABLE_NAME`
FROM 
    `information_schema`.`TABLES`
WHERE
    `TABLE_SCHEMA` = [DATABASE_NAME]

然后你可以查询每个表......

答案 1 :(得分:1)

如果要检索某些列值,而不知道列名称 有一个列名称的命令,它将为您提供现有表的所有列名称

 SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('COLOM_NAME_TO_SEARCH')
AND TABLE_SCHEMA='YOUR_DATABASE_NAME'; 

我认为这会有所帮助。