SQL语句在having子句中使用条件时出错

SQL语句在having子句中使用条件时出错,sql,Sql,我有一个products表,表中有id、price、category和city列。我需要找到一个巴塞罗那城市中最便宜的蔬菜的数量 我尝试了此SQL查询,但出现错误: SELECT COUNT( * ) FROM products HAVING lower(category) = 'veggies' AND lower(city) = 'Barcelona' AND price = (SELECT MIN(price) FROM products

我有一个
products
表,表中有
id
price
category
city
列。我需要找到一个
巴塞罗那
城市中最便宜的
蔬菜的数量

我尝试了此SQL查询,但出现错误:

SELECT COUNT( * ) 
FROM products 
HAVING lower(category) = 'veggies' AND lower(city) = 'Barcelona' 
   AND price = (SELECT MIN(price)
                FROM products
                WHERE lower(category) = 'veggies' and lower(city) = 'Barcelona');

你能告诉我哪里出了问题吗?

看看sql的文档

你需要一个在这里没有的地方,它在连接之前出现

SELECT COUNT( * ) 
FROM products pd 
Where lower(category) = 'veggies' AND lower(city) = 'Barcelona' 
AND price = (
   SELECT MIN(price) 
   FROM products pd
   WHERE lower(category) = 'veggies' and lower(city) = 'Barcelona'
);

HAVING关键字在执行GROUPBY时使用,并且需要where子句

SELECT COUNT( * ) 
FROM products 
WHERE city = 'Barcelona' and categories = 'veggies'
ORDER BY price asc

这将为您提供巴塞罗那最便宜的蔬菜。

也许您错过了这里的一组?为什么我们需要一组?我们不需要聚合任何东西,这样就不需要group by。这里的count将给出整个表的计数,而不是特定的素食价格点Hi Hogan,第二个在子查询中。谢谢你说得对!对不起,也许更好的缩进有助于提高可读性?是的,我也看到了一个问题。。。在子查询中也需要连接到价格。只有一个表,即products,行“内部连接价格”使我认为有两个表。你能解释一下吗this@xedav90901--我想是假设你有两张桌子--如果你不把它拿出来的话。