[英]Nested query sql , unable to execute
我想比较一些浮动值。 要做,我的查询就像:
SELECT * FROM pricelist WHERE START_FREQUENCY >= '(
SELECT START_FREQUENCY
FROM pricelist
WHERE START_FREQUENCY BETWEEN '0.49999' AND '0.50001'
)' AND STOP_FREQUENCY <= '(
SELECT STOP_FREQUENCY
FROM pricelist
WHERE STOP_FREQUENCY BETWEEN '0.59999' AND '0.60001'
)'
但是在我的PHP中,它显示“无法执行查询”。 我在哪里做错了? 请帮忙
编辑:
我有一个表,其中有两个字段, START_FREQUENCY
和STOP_FREQUENCY
。 我正在尝试提取频率范围内的所有值。 例如说
START_FREQUENCY STOP_FREQUENCY
1 0.4 0.9
2 0.5 1.4
3 0.8 1.9
当用户输入start frequency = 0.4 and stop frequency = 1.9
,他应该得到的结果Row1
, Row2
和Row3
。
您内部的SELECT不应该被引用。 尝试这个:
SELECT * FROM pricelist WHERE START_FREQUENCY >= (
SELECT START_FREQUENCY
FROM pricelist
WHERE START_FREQUENCY BETWEEN 0.49999 AND 0.50001
) AND STOP_FREQUENCY <= (
SELECT STOP_FREQUENCY
FROM pricelist
WHERE STOP_FREQUENCY BETWEEN 0.59999 AND 0.60001
)
我还删除了您电话号码周围的引号; MySQL会将它们转换为背后的数字,但是无需猜测数据库并进行更多工作。
您的版本具有以下结构:
SELECT *
FROM pricelist
WHERE START_FREQUENCY >= '...'0.49999' AND '0.50001'...'
AND STOP_FREQUENCY <= '...'0.59999' AND '0.60001'...'
并且'string'0.49999'
无效。
更新:听起来您似乎太复杂了。 我想您只想要这个(使用0.4和1.9):
select *
from pricelist
where START_FREQUENCY >= 0.4
and STOP_FREQUENCY <= 1.9
在MySQL命令行客户端或其他更直接的环境中尝试查询,这样您就可以看到数据库正在生成的实际错误。
最有可能与您在子查询周围使用引号有关,引号不应存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.