Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL上的子查询_Mysql_Sql_Select_Subquery_Inner Join - Fatal编程技术网

MySQL上的子查询

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

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

我试图创建一个子查询,从表中选择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
但是我得到的错误
只允许作为表达式一部分的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