SELECT r.name
FROM roles r
WHERE id IN ( SELECT role_id ,
system_user_id
FROM role_members m
WHERE r.id = m.role_id
AND m.system_user_id = intIdSystemUser
)
IN子句中的嵌套 SELECT语句返回两列,解析器将其视为操作数,这在技术上是正确的,因为 id 列只匹配嵌套 select 语句返回的结果中的一列(role _ id)中的值,而嵌套 select 语句应该返回一个列表。
为了完整起见,正确的语法如下。
SELECT r.name
FROM roles r
WHERE id IN ( SELECT role_id
FROM role_members m
WHERE r.id = m.role_id
AND m.system_user_id = intIdSystemUser
)