2016-01-19 3 views
-1

У меня есть таблица под названием «Студент» с колонками Name, Role, Class и Subject.Вставить в таблицу на основе условия в mysql 5.7

У меня есть другая таблица с именем «StudentClass» с колонками Name и Class. Мне нужно вставить таблицы Name и Class таблицы «StudentClass» из таблицы «Студент», если Name и его соответствующие Class не существуют в таблице «StudentClass». Если Name существует в таблицах «StudentClass», но его соответствующее Class значения отличается для этой строки, а затем обновить значение Class для этой строки в таблице «» StudentClass

Я не могу просто укоротить таблицу и вставьте «StudentClass» Name и Class из таблицы «Студент», потому что я отслеживаю любые изменения, сделанные в таблице «StudentClass».

Так есть ли запрос MySql, который вставляет Name и Class из таблицы «Student» в таблице «StudentClass», если Name и соответствующий Class не существует в «StudentClass» таблица еще обновить строку, если Name существует, но его соответствующий Class Значение отличается.

ответ

0

Попробуйте это:

INSERT INTO StudentClass (Name, Class) 
SELECT Name, Class FROM Student AS S 
    WHERE NOT EXISTS (SELECT * FROM StudentClass AS SC 
        WHERE SC.Name = S.Name AND SC.Class=S.Class); 

Вы можете узнать больше о EXISTS и NOT EXISTS here.

0

Запрошенный вами запрос работал только для ввода новых записей. Я не предоставляю функцию обновления. Поэтому я изменил ваш запрос и добавил запрос на обновление с помощью запроса insert, который решил мою проблему.

INSERT INTO StudentClass (Name, Class) 
SELECT Name, Class FROM Student AS S 
    WHERE NOT EXISTS (SELECT * FROM StudentClass AS SC 
        WHERE SC.Name = S.Name); 


UPDATE StudentClass SC INNER JOIN Student S ON SC.Name = S.Name 
     SET SC.Class = S.Class WHERE SC.Class != S.Class 

Спасибо за помощь

Смежные вопросы