如何根据另一个表的计数显示表中的列,而不必在SELECT语句中添加计数



所以我想在OWNER表中显示所有内容,但要基于他在DOG表中的狗数量。

SELECT o.OwnerId, o.Name, o.Address, o.Contact
FROM OWNER o LEFT JOIN DOG d ON o.OwnerId = d.OwnerId
WHERE DATEDIFF(year, d.DateOfBirth, '05.04.2014') > 2
HAVING COUNT(d.OwnerId) >= 2

但是,当我运行此程序时,我在选择列表中得到错误列"OWNER.OwnerId"无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。

基于类似的问题和我的理解,我读到您需要在SELECT中添加聚合函数,但即使我这样做,错误也会转移到下一列,即Name。话虽如此,我不希望实际显示点算。只是OWNER表中的列。

SELECT o.OwnerId, o.Name, o.Address, o.Contact
FROM OWNER o LEFT JOIN DOG d ON o.OwnerId = d.OwnerId
WHERE DATEDIFF(year, d.DateOfBirth, '05.04.2014') > 2
GROUP BY o.OwnerId, o.Name, o.Address, o.Contact
HAVING COUNT(d.DogId) >= 2

相关内容

最新更新