У меня есть две таблицы, таблица А имеет столбцы маркер (первичный ключ) и простои (INT
), Таблица B имеет столбцы маркер, статус (ENUM
с 3 состояниями: active
, unstable
, inactive
), продолжительность (INT
).MySql оператор UPDATE с SELECT, данные обобщающих из таблицы 2
Я хочу суммировать длительность из Таблицы B, только для состояний unstable
и inactive
. И после этого, присвоить результат колонка простоя из таблицы А.
Так, например,
TABLE A
=======
token downtime
--------------------------
bv87pxicnrtk8pw null
v3525kq2kzihb9u null
TABLE B
=======
token state duration
------------------------------------------
v3525kq2kzihb9u active 9
v3525kq2kzihb9u unstable 20
v3525kq2kzihb9u inactive 60
bv87pxicnrtk8pw unstable 11
bv87pxicnrtk8pw active 140
bv87pxicnrtk8pw inactive 40
RESULT
======
token downtime
--------------------------
bv87pxicnrtk8pw 51
v3525kq2kzihb9u 80
Я попытался
UPDATE A
SET downtime = (SELECT SUM(duration) FROM B WHERE state != 'active' GROUP BY token)
WHERE A.token = B.token;
, но без успеха.
Новичок в SQL. Может кто-нибудь мне помочь?
Привет, и спасибо за ответ. Это вполне может устранить проблему, но неплохо добавить некоторое объяснение того, что вы изменили, и почему это решает проблему. Здесь есть куча новичков, и они могут узнать кое-что из вашего опыта. Не забывайте, что то, что может быть очевидно для вас, может быть не для них ... –