我会这样做:
假设您创建了一个 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' );
将员工 ID 列表实现为表:
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 |
+-------------+------------+
请注意,订单不会保留,如果您需要此操作,请在 EMPLOYEE_LIST 中添加“键”字段并ORDER BY key
在最终 SQL 语句中添加
PS:SELECT IN 不是一个好的选择 - 列表 (1, 2, 1, 1) 在内部被压缩为 (1, 2) ,即任何重复项都将被消除,因为它们无关紧要。
有关更多详细信息,请参阅W3Schools.com SQL IN 运算符