Sql выбрать из массива значения, которых нет в таблице
Мне надо написать функцию, в которую можно передать массив и она вернёт значения из таблицы, которых нет в массиве.
Например, массив names_array = ['Kirill', 'Masha', 'Dasha']
И есть таблица, например, студенты:
student(
student_id bigserial primary key,
student_first_name varchar(20) NOT NULL,
student_last_name varchar(20) NOT NULL,
something text DEFAULT NULL
)
Хотелось бы что-то, вроде,
CREATE OR REPLACE FUNCTION test(names_array text[] )
RETURNS text[] AS
$BODY$
BEGIN
result := SELECT name FROM names_array WHERE name NOT IN (SELECT student_first_name FROM student);
return result;
END;
$BODY$
LANGUAGE plpgsql
И если в таблицу нет студентов Кирилла(ов), но есть Даша и Маша (а может их вообще несколько), то result = ['Kirill']