MySQL嵌套查询执行

Ank*_*jee 1 mysql sql nested execution

我正在编写嵌套的MySQL查询,其中子查询返回多行,因此无法执行查询.

有谁能建议我解决这个问题?

提前致谢.

OMG*_*ies 5

关于返回多个值的子查询的错误告诉我您正在尝试直接值比较,如下所示:

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所指出的,子查询通常不会返回多个列(尽管某些数据库支持元组匹配),在这种情况下,您需要定义派生表/内联视图并加入它.

如果你有关于这个问题的更多信息,我会很高兴...