mysql php 查询 HAVING 子句
题
我试图让这个查询工作,但我收到这个错误:“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的用于select
手册页:
SQL标准要求具有 必须引用中唯一的列
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
.
适当的方式做到这一点是通过使用其中的条款。
$query = "SELECT
zips.*
FROM
zips
WHERE
zips.city LIKE '%$city%'
AND
zips.stateabbr LIKE '%$state%'
LIMIT 1";
有时要使用你们分组,看到 在这里, 对于一个解释
0哎呀对不起你们我想通了这个问题,显然我把航天城之前,当我在表中指定的列。所以我改名为列,反正工作的感谢家伙!但使用其中的功能,而不必必须加快东西很多,谢谢你们!