MySQL 上的子查询

Subquery on MySQL

我知道这可能是一个重复的问题,但我无法下定决心,也找不到合适的例子。

我正在尝试创建一个子查询,从 table 中选择 ID 为 x、y 或 z 的元素,然后从该选择中选择面积为 xx、yy 或 zz 的元素。

这就是查询:

SELECT * FROM establecimientos 
INNER JOIN subtipos ON (establecimientos.subtipos_idsubtipo = subtipos.idsubtipo) 
WHERE subtipos_idsubtipo = 11  OR  subtipos_idsubtipo = 12  OR  subtipos_idsubtipo = 13  OR  subtipos_idsubtipo = 14 
AND zonas_idzona in 
(SELECT * FROM establecimientos 
WHERE zonas_idzona = 2  OR zonas_idzona = 3  OR zonas_idzona = 4  OR zonas_idzona = 5  OR zonas_idzona = 6  OR zonas_idzona = 7  OR zonas_idzona = 8)
LIMIT 0, 90

但我收到错误 only a single result allowed for a SELECT that is part of an expression

我很头疼!谢谢!

... zonas IN (SELECT * FROM ...)
                     ^---here

子查询为每个结果行返回多个字段,这意味着数据库完全不知道应该使用哪些字段与 zonas 进行比较。

改为

... zonas IN (SELECT specific_field FROM ...)
                      ^^^^^^^^^^^^^^---changed

相反。

您需要更新子查询以仅提取您将使用的字段。

改变这个:

SELECT * FROM establecimientos 
WHERE zonas_idzona = 2  OR zonas_idzona = 3  OR zonas_idzona = 4  OR zonas_idzona = 5  OR zonas_idzona = 6  OR zonas_idzona = 7  OR zonas_idzona = 8

至:

SELECT <Field Name> FROM establecimientos 
WHERE zonas_idzona = 2  OR zonas_idzona = 3  OR zonas_idzona = 4  OR zonas_idzona = 5  OR zonas_idzona = 6  OR zonas_idzona = 7  OR zonas_idzona = 8