首页 > 解决方案 > 子查询返回超过 1 个 - 将值传递给子查询的问题

问题描述

我正在运行以下查询,该查询一直指出给出了不止一行:

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

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

标签: mysqltsql

解决方案


尝试这个:

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)

推荐阅读