Я ищу некоторую помощь с SQL-запросом с конструкцией IF-THEN-ELSE. Он вращается вокруг автоматизма в моем приложении после вставки новой строки в «дампе»-таблице - в зависимости от значения одного столбца - для копирования в специальную таблицу.Конструкция CASE-WHEN-THEN-ELSE в SQL
Для осуществления этого, я сделал тестовую БД с таблицы Prob и таблицы prob2
Спусковой механизм находится под контролем. Теперь все еще приходит к тому, что делать с этим специальным правилом. Это зависит от значения «с»
На словах это то, что я хочу:
IF (the value in column c of the prob-table - from the row with the highest ID of the prob table = 2)
THEN (Now, copy this line to the prob2 table)
END IF
Таким образом я могу для каждого значения «с» выполнять различные действия в IF-THEN - ELSEIF - THEN - ELSEIF - THEN - END IF конструкция.
Таблицы пробы:
- id | a | b | c |
- ----+---------------+---+---+
- 1 |std745_900w | 5 | 4 |
- ----+---------------+---+---+
- 2 |std745_900w | 2 | 3 |
- ----+---------------+---+---+
- 3 |std745_900w | 1 | 9 |
- ----+---------------+---+---+
- 4 |std745_900w | 3 | 2 |
- ----+---------------+---+---+
Мой перевод в (не работает) SQL Query
IF
(SELECT c FROM prob WHERE id = (SELECT MAX(id) FROM prob) = 2)
THEN
(INSERT INTO prob2 (id, a, b, c)
SELECT id, a, b, c FROM prob WHERE id = (SELECT MAX(id) FROM prob))
END IF
запрос после IF в скобках) ->SELECT c FROM prob WHERE id = (SELECT MAX(id) FROM prob)
< - работают Оке и результаты в «2» Запрос после THEN ->INSERT INTO prob2 (id, a, b, c) SELECT id, a, b, c FROM prob WHERE id = (SELECT MAX(id) FROM prob)
< - хорошо работает SQL, однако, не понимает выражения «IF Statement».
Это MySQL на MariaDB
Может кто-нибудь помочь?
Вы говорите, что у вас есть триггер вставки для таблицы, и вы хотите включить эту логику в этот триггер? –
В MySQL an if ... then - else ... end if statement может использоваться только в хранимых программах (процедура, функция, триггер), вы не можете запускать его как есть. Извлечение данных из базы данных также немного отличается. – Shadow
Да, в MariaDB вы можете определить триггер после вставки в таблицу. Это вызывает запрос SQL. Я тестировал его с помощью простого запроса, и это работает. Моя проблема кроется в тесте в IF-части конструкции it-then-else –