我正在尝试选择某个列没有特定值的行,例如 0,但我无法让它工作。
SELECT *
FROM rentals
GROUP BY date, rooms, price
HAVING show_independently < 1
如果show_independently
是 1,那么我不想将它们分组。但是,即使大多数行show_independently
的值为 0,此语句也不显示任何行。
我正在尝试选择某个列没有特定值的行,例如 0,但我无法让它工作。
SELECT *
FROM rentals
GROUP BY date, rooms, price
HAVING show_independently < 1
如果show_independently
是 1,那么我不想将它们分组。但是,即使大多数行show_independently
的值为 0,此语句也不显示任何行。
SELECT date, rooms, price
FROM rentals
WHERE show_independently < 1
GROUP BY date, rooms, price
使用聚合函数过滤数据时使用HAVING
子句。
一个典型的查询HAVING
:
SELECT yourColumn, aggregate_function(otherColumn)
FROM yourTable
WHERE yourColumn = someValue
GROUP BY yourColumn
HAVING aggregate_function(otherColumn) = someOtherValue
我想你想使用一个WHERE
子句:
SELECT date, rooms, price
FROM rentals
WHERE show_independently < 1
GROUP BY date, rooms, price
如果您只想对某些行进行分组而将其他行不分组,则可以使用UNION
:
SELECT *
FROM rentals
WHERE show_independently <> 1
GROUP BY date, rooms, price
UNION ALL
SELECT *
FROM rentals
WHERE show_independently = 1
这仅对那些show_independently
不是 1 的部分进行分组,并包括其余部分而不对它们进行分组。