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--我想是假设你有两张桌子--如果你不把它拿出来的话。