簡體   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