0

我想比较一些浮动值。要做,我的查询是这样的:

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 中,它显示 'Unable to execute query' 。我在哪里做错了?请帮忙

编辑 :

我有一个表,其中有两个字段,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他应该得到Row1,Row2和的结果Row3

4

2 回答 2

3

不应引用您的内部 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
于 2011-10-21T05:47:06.350 回答
1

在 MySQL 命令行客户端或其他更直接的环境中尝试查询,以便查看数据库生成的实际错误。

很可能它与您在子查询周围使用引号有关,这不应该存在。

于 2011-10-21T05:46:11.480 回答