WedX - журнал о программировании и компьютерных науках

Обновление столбца с оператором IF MYSQL

Это может быть совершенно невозможно в чистом MYSQL, но, надеюсь, кто-то может пролить свет.

В основном я пытаюсь создать расписание, которое проведет тест на таблице и обновит новую таблицу с помощью Cleared OR Uncleared.

Вот снимок таблицы - тестовые образцы

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, и если все значения ROUTE равны TCRT, то это будет правдой, или если бы одно единственное значение было TSTS, а остальные были TCRT, то это было бы ложью.

Из таблицы 1 видно, что TYPE_NO 390397 не очищен, потому что не все значения ROUTE являются TCRT, одно по-прежнему TSTS. Второй type_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 как Cleared, иначе Uncleared.

Хотя, когда я пытаюсь установить эти переменные, я получаю следующую ошибку:

Subquery returns more than 1 row 

Это означает, что я не могу использовать group by для type_no, но это абсолютно необходимо для оценки каждой группы TYPE_NO.

Есть ли другой способ сделать то, чего я пытаюсь достичь... надеюсь, это имеет смысл!

Если есть вопросы, задавайте

21.04.2015

Ответы:


1

https://sqlfiddle.com/#!9/f4af8/2

UPDATE TypeCleared
INNER JOIN (
 SELECT TYPE_NO, SUM(IF(ROUTE='TSTS',1,0)) as criteria
 FROM testpieces
 GROUP BY TYPE_NO
 ) t
ON  TypeCleared.TYPE_NO = t.TYPE_NO
SET TYPE_CLEARED = IF(t.criteria=0,'CLEARED','UNCLEARED')
21.04.2015
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]