gpt4 book ai didi

php - mysql php查询HAVING子句

转载 作者:行者123 更新时间:2023-11-29 01:15:16 27 4
gpt4 key购买 nike

我试图让这个查询工作,但我得到这个错误:“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());`

我的 zips 表有一个城市列,所以我不确定问题出在哪里,我知道我正在访问数据库,因为我可以毫无错误地运行此查询:

$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) ,那是因为您的表中不存在该列。

在这种情况下,我们无能为力:您必须检查表的结构,以确定它包含哪些列。

您可以使用基于网络的工具(例如 phpMyAdmin)或使用 SQL 指令(例如:

)来检查该结构
desc zips;


供引用,引用MySQL's manual page for select :

The SQL standard requires that HAVING must reference only columns in the GROUP BY clause or columns used in aggregate functions.
...

Do not use HAVING for items that should be in the WHERE clause.
For example, do not write the following:

SELECT col_name FROM tbl_name HAVING col_name > 0;

Write this instead:

SELECT col_name FROM tbl_name WHERE col_name > 0;

...
The HAVING clause can refer to aggregate functions, which the WHERE clause cannot

关于php - mysql php查询HAVING子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com