关于返回多个值的子查询的错误告诉我您正在尝试直接值比较,如下所示:
WHERE col = (SELECT col2 FROM TABLE_2)
Run Code Online (Sandbox Code Playgroud)
解决方案取决于来自子查询的数据 - 您是否希望查询使用返回的所有值?如果是,则更改IN的等号:
WHERE col IN (SELECT col2 FROM TABLE_2)
Run Code Online (Sandbox Code Playgroud)
否则,您需要更正子查询,以便它只返回一个值.MAX或MIN聚合函数是可能的 - 它们将返回最高或最低值.它可能只是关联子查询的问题:
FROM TABLE_1 t1
WHERE t1.col = (SELECT MAX(t2.col2)
FROM TABLE_2 t2
WHERE t2.fk_col = t1.id) -- correlated example
Run Code Online (Sandbox Code Playgroud)
正如Tabhaza所指出的,子查询通常不会返回多个列(尽管某些数据库支持元组匹配),在这种情况下,您需要定义派生表/内联视图并加入它.
如果你有关于这个问题的更多信息,我会很高兴...