是否可以使用 java preparedstatement SQL 搜索 MySQL workbench 数据库中的所有表以更改值?
Is it possible to search all tables in MySQL workbench database with java preparedstatement SQL in order to change a value?
我在 Schema/Database 中有几个这样的 table(架构称为“用户”) MySQL workbench:
----Table 1----
User Score
John 5
Sarah 3
----Table 2----
User Score
John 5
----Table 3----
User Score
John 5
Sarah 3
假设 Sarah 的分数变为 5。我想将她存在的所有 table 中的所有分数更新为 5。那么 3 table s 看起来像这样:
----Table 1----
User Score
John 5
Sarah 5
----Table 2----
User Score
John 5
----Table 3----
User Score
John 5
Sarah 5
是否可以使用 java 准备好的 SQL 语句来做到这一点?如果是这样,我该怎么做?提前致谢。我似乎找不到任何东西。我知道可行的一种方法是搜索每个 table,将 table 名称放入数组列表中,然后循环搜索每个名称。但我不确定这是最好的方法。
我在想这样的事情,如果可能的话(一些笨拙的伪代码):
SELECT ALL_TABLES WHERE user = "SARAH" UPDATE score = 5
看来您需要像这样动态构建语句:
set @user="SARAH";
set @score=5;
select
CONCAT("UPDATE `",c1.TABLE_NAME,"` SET score=",@score," WHERE user='",@user,"'") as statement
from
information_schema.columns c1
inner join
information_schema.columns c2 on c1.TABLE_SCHEMA=c2.TABLE_SCHEMA
and c1.TABLE_NAME=c2.TABLE_NAME
and c2.COLUMN_NAME='score'
where c1.TABLE_SCHEMA='test' and c1.COLUMN_NAME='user'
;
输出可以是这样的:
+-------------------------------------------------+
| statement |
+-------------------------------------------------+
| UPDATE `table 1` SET score=5 WHERE user='SARAH' |
| UPDATE `table 2` SET score=5 WHERE user='SARAH' |
| UPDATE `table 3` SET score=5 WHERE user='SARAH' |
+-------------------------------------------------+
How to Execute Dynamic Sql String as a Query in mysql server? 之前有人问过...
我在 Schema/Database 中有几个这样的 table(架构称为“用户”) MySQL workbench:
----Table 1----
User Score
John 5
Sarah 3
----Table 2----
User Score
John 5
----Table 3----
User Score
John 5
Sarah 3
假设 Sarah 的分数变为 5。我想将她存在的所有 table 中的所有分数更新为 5。那么 3 table s 看起来像这样:
----Table 1----
User Score
John 5
Sarah 5
----Table 2----
User Score
John 5
----Table 3----
User Score
John 5
Sarah 5
是否可以使用 java 准备好的 SQL 语句来做到这一点?如果是这样,我该怎么做?提前致谢。我似乎找不到任何东西。我知道可行的一种方法是搜索每个 table,将 table 名称放入数组列表中,然后循环搜索每个名称。但我不确定这是最好的方法。
我在想这样的事情,如果可能的话(一些笨拙的伪代码):
SELECT ALL_TABLES WHERE user = "SARAH" UPDATE score = 5
看来您需要像这样动态构建语句:
set @user="SARAH";
set @score=5;
select
CONCAT("UPDATE `",c1.TABLE_NAME,"` SET score=",@score," WHERE user='",@user,"'") as statement
from
information_schema.columns c1
inner join
information_schema.columns c2 on c1.TABLE_SCHEMA=c2.TABLE_SCHEMA
and c1.TABLE_NAME=c2.TABLE_NAME
and c2.COLUMN_NAME='score'
where c1.TABLE_SCHEMA='test' and c1.COLUMN_NAME='user'
;
输出可以是这样的:
+-------------------------------------------------+
| statement |
+-------------------------------------------------+
| UPDATE `table 1` SET score=5 WHERE user='SARAH' |
| UPDATE `table 2` SET score=5 WHERE user='SARAH' |
| UPDATE `table 3` SET score=5 WHERE user='SARAH' |
+-------------------------------------------------+
How to Execute Dynamic Sql String as a Query in mysql server? 之前有人问过...