MySQL上的子查询
我知道这可能是一个重复的问题,但我无法下定决心,也无法找到正确的例子 我试图创建一个子查询,从表中选择id为x、y或z的元素,并从中选择区域为xx、yy或zz的元素 这就是问题所在:MySQL上的子查询,mysql,sql,select,subquery,inner-join,Mysql,Sql,Select,Subquery,Inner Join,我知道这可能是一个重复的问题,但我无法下定决心,也无法找到正确的例子 我试图创建一个子查询,从表中选择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
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
但是我得到的错误只允许作为表达式一部分的SELECT得到一个结果
我头痛得厉害!谢谢 是的
... zonas IN (SELECT * FROM ...)
^---here
子查询为每个结果行返回多个字段,这意味着DB完全不知道应该使用哪些字段与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
致:
从establecimientos中选择
其中zonas_idzona=2或zonas_idzona=3或zonas_idzona=4或zonas_idzona=5或zonas_idzona=6或zonas_idzona=7或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