Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 子查询返回超过1个问题,并将值传递给子查询_Mysql_Tsql - Fatal编程技术网

Mysql 子查询返回超过1个问题,并将值传递给子查询

Mysql 子查询返回超过1个问题,并将值传递给子查询,mysql,tsql,Mysql,Tsql,我正在运行以下查询,该查询不断说明给出了不止一行: select filestorage.id from `filestorage` where (SELECT LEFT(filestorage_inst_data.value, length(filestorage_inst_data.value - 1)) as seconds FROM filestorage_inst_data WHERE filestorage_inst_data.parameter

我正在运行以下查询,该查询不断说明给出了不止一行:

select filestorage.id 
from `filestorage` 
where (SELECT LEFT(filestorage_inst_data.value, length(filestorage_inst_data.value - 1)) as seconds
        FROM filestorage_inst_data 
        WHERE filestorage_inst_data.parameter = "Time" AND filestorage_inst_data.filestorage_id = filestorage.id) <= 3600

出于某种原因,只将第一个值传递到子查询中。另外,如果我在子查询中设置了一个限制,那么数据的获取就不会很好,只是我不明白为什么查询会获取多个结果?

在where子句上给出select语句时,必须传递一个特定的行。选择子句,您在where子句上使用的子句必须返回一个唯一的行。比如说

"SELECT * FROM user WHERE role_id=(SELECT role_id FROM user_role WHERE role_name='Admin');"
试试这个:

SELECT filestorage.id 
FROM filestorage f
WHERE EXISTS(SELECT 1 FROM filestorage_inst_data fid
             WHERE fid.parameter = 'Time' 
               AND fid.filestorage_id = f.id 
               AND CAST(LEFT(fid.value, length(fid.value - 1)) AS UNSIGNED) <= 3600)

我已经调整了状态,提供了一些示例数据和你期望的输出,如果你的WHERE子句返回更多,那么你可以考虑添加限制1,然后一个行限制1做这项工作,这感觉就像是一个黑客攻击;