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
我知道这可能是一个重复的问题,但我无法下定决心,也找不到合适的例子。
我正在尝试创建一个子查询,从 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