繁体   English   中英

嵌套查询sql,无法执行

[英]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_FREQUENCYSTOP_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 ,他应该得到的结果Row1Row2Row3

您内部的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM