我似乎無法得到這個工作,MySQL SELECT查詢語法 - 不按預期工作?
基本上,我想要做的是返回,其中列timestamp
比可變$timestamp
更多的所有行,列hit_counter
小於列max_hits
。
獲得第一部分工作不是問題,但第二部分似乎是,因爲它仍然提取行時hit_counter
是多於max_hits
。
這裏是我的代碼:
$query = "SELECT * FROM links WHERE timestamp >= '$timestamp' AND hit_counter >= 'max_hits' AND overflow = 'NO'";
$result = mysql_query($query);
$size = mysql_num_rows($result);
這似乎返回所有正確的行爲timestamp
,但仍繼續選擇行,其中hit_counter
超過max_hits
(即使它不應該選擇任何以全部爲>=
大於或等於),而將>=
反轉爲<=
即使在數學上也不返回任何結果,它是有效的。
我想也許我錯誤地將max_hits
作爲一個值引用,因爲我不明白它爲什麼在起作用?
我知道我的問題有點不確定,所以如果你需要任何澄清,請問:)。
任何答案/幫助將不勝感激!
UPDATE:
我已經更新了查詢按下面的許多偉大的答案,(去掉「」包圍max_hits
,改變>=
到<=
但它仍然會返回其並不意味着被列入行通過查詢
這裏有一個引擎收錄到我的全碼:http://pastebin.com/V4vXJr1w
這裏是我的表結構的鏈接:https://docs.google.com/spreadsheet/ccc?key=0AoELUDjfbpSXdEUybkgwQmpxUnVCWlZOZnFJdzFaQmc&hl=en_GB
掛在第二,你有什麼期待'hit_counter> = max_hits'返回?你似乎很驚訝它返回的結果是hit_counter大於max_hits ...但這正是你所要求的。對不起,如果我錯過了什麼,你會介意澄清嗎? – mwan
@ mwan100:將'> ='改成'<='在這個實例中沒有返回結果,至少'> ='返回結果,原因是什麼,問題是'max_hits'被單引號,即解釋爲一個字符串,正如在下面的答案中已經指出:)。 – Avicinnian
你能給我們多一些關於哪些行被返回的信息嗎?如果將hit_counter全部退出,你會得到相同的行數嗎? –