Это может быть совершенно невозможно в чистом MYSQL, но, надеюсь, кто-то может пролить некоторый свет.Обновление столбца с IF Statement MYSQL
В основном я пытаюсь создать расписание, которое будет выполнять тест на таблице и обновлять новую таблицу с помощью Очистить ИЛИ Не очищено.
Вот снимок таблицы - testpieces
TEST_NO RING ROUTE TYPE_NO
7256 BT1 TSTS 390397
7257 BT1 TCRT 390397
7258 BT1 TCRT 390397
7259 BT1 TCRT 390397
7260 BT1 TCRT 390397
7261 BT1 TCRT 390397
7262 BT1 TCRT 390397
7263 BT1 TCRT 390397
7264 BT1 TCRT 390397
7265 BT1 TCRT 390397
7266 BT1 TCRT 390397
7267 BT1 TCRT 390418
7268 BT1 TCRT 390418
7269 BT1 TCRT 390418
7270 BT1 TCRT 390418
7271 BT1 TCRT 390418
7272 BT1 TCRT 390418
7273 BT1 TCRT 390418
7274 BT1 TCRT 390418
7275 BT1 TCRT 390418
7276 BT1 TCRT 390418
7277 BT1 TCRT 390418
То, что я пытаюсь добиться, чтобы выполнить проверку всех значений ROUTE для каждого TYPE_NO и если все значения маршрута TCRT то это будет быть истинным, или если одно значение было TSTS, а остальные были TCRT, тогда это было бы ложным.
Из таблицы 1 видно, что TYPE_NO 390397 не очищается, потому что не все значения ROUTE являются TCRT, а все еще являются TSTS. Второй тип_no 390418 имеет ROUTE всех TCRT, это означает, что Type_no очищается.
Итак, мне нужно обновить другую таблицу под названием TypeCleared, и есть результаты, как следующий ..
TYPE_NO TYPE_CLEARED
390397 UNCLEARED
390418 CLEARED
Так позволяет сказать TypeCleared таблица содержит столбец, полный одного Type_no и Type_Cleared поле пусто.
Я попытался следующие -
UPDATE TYPECLEARED SET TYPECLEARED.TYPE_CLEARED = "CLEARED" WHERE TYPECLEARED.TYPE_NO = TESTPIECES.TYPE_NO AND ROUTE = "TCRT" ;
UPDATE TYPECLEARED SET TYPECLEARED.TYPE_CLEARED = "UNCLEARED" WHERE TYPECLEARED.TYPE_NO = TESTPIECES.TYPE_NO AND ROUTE NOT IN ("TCRT");
Это SQL из таблицы выглядеть следующим образом
TYPE_NO TYPE_CLEARED
390397 UNCLEARED
390397 CLEARED
390418 CLEARED
Так не сумев таким образом, я думал, что есть какой-то тип пути для создания IF Else с использованием пользовательских переменных.
SET @PIECES = (SELECT count(test_no) from live_testpiec group by TYPE_NO);
SET @ROUTE = (SELECT count(ROUTE) from live_testpiec WHERE ROUTING_POS = 'TCRT' group by TYPE_NO);
С переменным я могу сделать оценку, если @PIECES = @ROUTE затем обновить эту TYPE_NO, как Очищенные, еще неубранные.
Хотя, когда я пытаюсь установить эти переменные, я получаю следующее сообщение об ошибке -
Subquery returns more than 1 row
Значение Я не могу использовать группу, на type_no, но это абсолютно необходимо, чтобы оценить каждую группу TYPE_NO ,
Есть ли какой-либо другой способ делать то, что я пытаюсь достичь .. надеюсь, что это имеет смысл!
Любые вопросы, пожалуйста, спросите
работал отлично, спасибо большое! – SK2017