mysql - 子查询返回超过 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
出于某种原因,唯一的第一个值被传递到子查询中。另外,如果我确实在子查询中设置了一个限制,而不是可以很好地获取数据,那只是我不明白为什么查询会获取多个结果?
解决方案
尝试这个:
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)
推荐阅读
- c# - 实体框架中的 Linq group by
- javascript - 什么时候在 Javascript 中使用双重相等(松散相等)有意义?
- php - 使用 Foreach 创建关联数组,插入现有的关联数组
- rabbitmq - 如何停止回复以便 @SendTo 工作
- arrays - 在 Fortran 中定义具有非连续索引的数组
- javascript - 限制 Firestore 中的删除权限
- python - Python - PING 数据库中的 IP 地址列表
- google-apps-script - Google Apps 脚本 - 事件对象未“键入”
- sql-server-2016 - 测试 Select 语句中的列
- php - 刷新页面后如何生成随机数并保存最后一个随机数