java - 是否可以在mysql中将表本身的属性名称作为字符串传递?

标签 java mysql

我有一个表,其中包含属性 id 和 name1,name2,name3.....name10,其中这十个名称都属于 id。

id   name1 name2 name3 name4 name5 name6 name7 name8 name9 name10
201  ijk   lmn   xyz   abc   efg   hks   dkm   jjl   dkn   awt
202  mjl   pan   van   slm   tko   kds   jar   slk   dkf   asd

现在我需要检索 id,无论遇到 10 个名称中的哪个名称。如果它是一个 print 语句,则通过保持字符串“name”不变,使用循环来增加数字将非常容易。但是使用mysql语句的时候怎么办呢?首先,是否可以将属性名称作为字符串传递?

例如:为 where 条件传递字符串时,

String uname=jf1.getText();
PreparedStatement stmt=conn.prepareStatement("Select * from staff where id = ?");
stmt.setString(1,uname);
ResultSet rs=stmt.executeQuery();
rs.next();

但是当我需要检查name1到name10的所有属性时,可以这样吗?

String uname=jf1.getText();
PreparedStatement stmt=conn.prepareStatement("Select id from staff where ?=?");
for(int i=1;i<=10<i++)
stmt.setString(1,"name"+i);
stmt.setString(2,uname);

用户通过文本字段给出 uname。

最佳答案

使用 IN 不会更容易!

SELECT
   id
FROM
   staff
WHERE
   ? IN (name1, name2, name3, name4, name5,
         name6, name7, name8, name9, name10);

关于java - 是否可以在mysql中将表本身的属性名称作为字符串传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27065152/

相关文章:

java - 如何在 JPanel 上绘制 vector 图形

java - 魔方旋转算法

java - Java 中循环中的新对象被覆盖

PHP 循环检索与每个产品关联的所有类别

MySQL UPDATE 脚本不工作

mysql - 如何在表格中显示多个两个日期之间的所有日期?

java - 带有注释的 Spring Retry 框架不起作用

mysql - 多个触发器对一个表具有相同的操作时间和事件mysql错误

php - MYSQL 使用 PDO 在不存在的地方插入

java - ArrayList.remove(int) 与不同线程中的 ArrayList.remove(Object)