Я сделаю это так:
Предположим, у вас есть таблица Employee, созданная следующим образом:
CREATE TABLE EMPLOYEES ( EMPLOYEE_ID INTEGER NOT NULL, name CHAR(10) NOT NULL );
INSERT INTO EMPLOYEES ( EMPLOYEE_ID, name ) VALUES ( 1, 'John' );
INSERT INTO EMPLOYEES ( EMPLOYEE_ID, name ) VALUES ( 2, 'Victoria' );
Реализация списка идентификаторов сотрудников в виде таблицы:
CREATE TABLE EMPLOYEE_LIST ( EMPLOYEE_ID INTEGER NOT NULL );
INSERT INTO EMPLOYEE_LIST ( EMPLOYEE_ID ) VALUES ( 1 );
INSERT INTO EMPLOYEE_LIST ( EMPLOYEE_ID ) VALUES ( 2 );
INSERT INTO EMPLOYEE_LIST ( EMPLOYEE_ID ) VALUES ( 1 );
INSERT INTO EMPLOYEE_LIST ( EMPLOYEE_ID ) VALUES ( 1 );
Затем создайте окончательный список как объединение:
SELECT b.EMPLOYEE_ID, b.name
from EMPLOYEE_LIST a
INNER JOIN EMPLOYEES b on (a.EMPLOYEE_ID = b.EMPLOYEE_ID)
+-------------+------------+
| employee_id | name |
+-------------+------------+
| 1 | John |
| 1 | John |
| 1 | John |
| 2 | Victoria |
+-------------+------------+
Обратите внимание, что порядок не сохраняется, если вам это нужно, чем добавить поле 'key' в EMPLOYEE_LIST и добавить ORDER BY key
вокончательный оператор SQL
PS: SELECT IN не является хорошим вариантом - список (1, 2, 1, 1) внутренне сжимается как (1, 2), т. е. любые дубликаты удаляются, поскольку они не имеют значения.
Подробнее см. Оператор SQL IN W3Schools.com