[英]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.