[英]mysql php query HAVING clause
我試圖讓這個查詢工作,但我得到這個錯誤:'having子句'中的未知列'zips.city'
`$query = "SELECT zips.* FROM zips HAVING zips.city LIKE '%$city%' AND zips.stateabbr LIKE '%$state%' LIMIT 1"; $result = mysql_query($query) or die (mysql_error());`
我的拉鏈表有一個城市列,所以我不知道問題是什么,我知道我訪問數據庫,因為我可以運行此查詢沒有錯誤:
$zip1query = "SELECT zips.* FROM zips WHERE zips.zip = '$zip' ";
任何建議將不勝感激! 謝謝!
having
子句與where
子句的含義不同:在運行簡單查詢時,您應該使用where
- 這是您在第二個查詢中執行的操作。
having
被當條件有使用上的結果要被施加group by
子句。
這意味着,在這里,您的查詢應該以這種方式構建:
$query = "SELECT zips.*
FROM zips
where zips.city LIKE '%$city%'
AND zips.stateabbr LIKE '%$state%'
LIMIT 1";
有了這個,如果你仍然有一個關於不存在或未找到的列的錯誤(至少對於city
和/或stateabbr
) ,那將是因為你的表中不存在該列。
在這種情況下,我們無能為力:您必須檢查表的結構,以確定它包含哪些列。
您可以使用基於Web的工具(如phpMyAdmin)或使用SQL指令檢查該結構,例如:
desc zips;
供參考,引用MySQL的手冊頁進行select
:
SQL標准要求HAVING必須僅引用
GROUP BY
子句中的列或聚合函數中使用的列。
...
不要將HAVING
用於應該在WHERE
子句中的項目。
例如,不要寫下面的內容:SELECT col_name FROM tbl_name HAVING col_name > 0;
寫這個:
SELECT col_name FROM tbl_name WHERE col_name > 0;
...
HAVING
子句可以引用聚合函數,而WHERE
子句則不能
嘗試使用WHERE
而不是HAVING
。
正確的方法是使用WHERE子句。
$query = "SELECT
zips.*
FROM
zips
WHERE
zips.city LIKE '%$city%'
AND
zips.stateabbr LIKE '%$state%'
LIMIT 1";
在您進行分組時使用HAVING,請參閱此處以獲取解釋
o jeez對不起家伙我想出了問題,顯然我在城市之前放了一個空間,當我在表格中命名列。 所以我重新命名了這個專欄,無論如何,它都有效! 但是使用where功能而不是必須加快速度,謝謝你們!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.