簡體   English   中英

mysql php查詢HAVING子句

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM