2013-11-29 57 views
-1
$SQL="SELECT First_Name, Last_Name, Team, Pos, GP, G, A, (G+A) AS Points FROM stats ORDER BY Points DESC BETWEEN '$b1' AND '$b2'"; 

給我syntax error 'near 'BETWEEN '19' AND '17'' at line 1'正確的語法之間的MySQL

1917只是變量用戶輸入,以取代$b1$b2(這之間這間等)

任何建議?

+2

之間不會單獨工作。你需要像'WHERE fieldname BETWEEN ....' –

+0

這樣的嘗試,但不幸的是,它只是返回,點不是一個正確的列(它不是一個變量,它只是一個變量由兩個其他列的整數組成) – user2943358

+0

。 ..和'ORDER BY'應該位於'WHERE' – msturdy

回答

2

您不能在該WHERE子句中使用字段別名。你可以再次像這樣的WHERE子句中使用你的任務:

SELECT 
    First_Name, 
    Last_Name, 
    Team, 
    Pos, GP, G, A, 
    (G+A) AS Points 
FROM stats 
WHERE 
    (G+A) BETWEEN '$b1' AND '$b2' 
ORDER BY Points DESC 

標準SQL不允許你引用列別名WHERE子句。這種限制是因爲在執行WHERE代碼時,列值可能還沒有確定。

MySQL的文檔:http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

1

MySQL documentation描述了BETWEEN的語法:

expr BETWEEN min AND max 

If expr is greater than or equal to min and expr is less than or equal to max, 
BETWEEN returns 1, otherwise it returns 0 

有兩個問題,你的情況:

  1. BETWEEN總是返回0,因爲19> 17
  2. 很難說沒有更多的背景,但我覺得你的情況,你想使用BETWEEN作爲WHERE子句的一部分。例如,WHERE Points BETWEEN 17 AND 19