Можно ли выполнить поиск по всем таблицам в базе данных MySQL workbench с помощью SQL-запроса, подготовленного для Java, чтобы изменить значение?

У меня есть несколько таких таблиц в схеме / базе данных (схема называется «пользовательская») в рабочей среде MySQL:

----Table 1----
User       Score
John       5
Sarah      3

----Table 2----
User       Score
John       5

----Table 3----
User       Score
John       5
Sarah      3

Предположим, Сара получает изменение баллов до 5. Я хочу обновить все ее баллы во всех таблицах, в которых она существует, до 5. Итак, тогда 3 таблицы будут выглядеть следующим образом:

 ----Table 1----
User       Score
John       5
Sarah      5

----Table 2----
User       Score
John       5

----Table 3----
User       Score
John       5
Sarah      5

Возможно ли это сделать с помощью подготовленного java-оператора SQL? Если да, то как мне это сделать? Заранее спасибо. Кажется, я ничего не могу найти по этому поводу. Один из способов, который, как я знаю, будет работать, - это поиск каждой таблицы, занесение имен таблиц в массив и затем поиск каждой из них в цикле. Но я не уверен, что это лучший подход для этого.

Я думал примерно так, если бы это было возможно (какой-то неудобный псевдокод):

SELECT ALL_TABLES WHERE user = "SARAH" UPDATE score = 5

"несколько таблиц .... с именем" пользователь ". Непонятно, о чем вы говорите, потому что имя таблицы в схеме / базе данных уникально.

Luuk 04.04.2021 18:20

@Luuk, извините, я имел в виду, что имя базы данных было пользователем. позволь мне исправить это

PSU Change 04.04.2021 18:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вам нужно динамически построить свой оператор следующим образом:

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' |
+-------------------------------------------------+

Как выполнить динамическую строку Sql как запрос на сервере mysql? был задан раньше ...

извините, не смог найти ничего связанного, не знал, как это называется, только это отображалось: stackoverflow.com/questions/1796506/…. большое тебе спасибо

PSU Change 04.04.2021 18:51

Другие вопросы по теме