遇到 SQL 错误 1111 的问题
Posted
技术标签:
【中文标题】遇到 SQL 错误 1111 的问题【英文标题】:Running into issues with SQL Error 1111 【发布时间】:2017-08-17 17:13:15 【问题描述】:我正在创建一个客户有多个预订的实例。为此,每次在预订表中多次列出客户编号时,这表示他们有多个预订(这也是条件)。不幸的是,当我尝试运行此查询时,我得到:
错误代码:1111(无效使用组功能)。
这是我在下面所做的。
SELECT FirstName, LastName, tripName
FROM reservation, customer, trip
WHERE reservation.CustomerNum = customer.CustomerNum
AND reservation.TripID = trip.TripID
AND COUNT(reservation.CustomerNum) > 1
GROUP BY reservation.CustomerNum;
我对 SQL 很陌生,任何建议都会很有帮助。
【问题讨论】:
在这里查看答案:***.com/questions/22141968/…。基本上你需要把你的计数移到一个有子句中。 【参考方案1】:如果您使用 GROUP BY,则您选择的所有字段都必须在聚合函数中或包含在 GROUP BY 子句中。
【讨论】:
【参考方案2】:您需要编写正确的连接,使用别名有助于保持可读性并节省额外的击键次数,并且您需要使用类似的方法将结果限制为具有多个保留的结果:
select FirstName, LastName, tripName
from customer c
inner join reservation r
on c.CustomerNum = r.CustomerNum
inner join trip t
on r.TripID = t.TripID
where c.CustomerNum in (
select ir.CustomerNum
from reservation ir
group by ir.CustomerNum
having count(*) > 1
)
【讨论】:
谢谢。我不知道“HAVING”关键字。很有帮助,我会开始养成使用正确连接和别名的习惯。 @AlexKennedy 乐于助人!【参考方案3】:您必须使用 have 来过滤聚合结果(而不是在哪里)
SELECT FirstName, LastName, tripName
FROM reservation
INNER JOIN customer on reservation.CustomerNum = customer.CustomerNum
INNER JOIN trip on reservation.TripID = trip.TripID
GROUP BY reservation.CustomerNum;
having COUNT(reservation.CustomerNum) > 1
【讨论】:
以上是关于遇到 SQL 错误 1111 的问题的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[HY000]: 一般错误: 1111 无效使用组函数 (SQL: select GROUP_CONCAT(sum(documents.grand_total) SEPARATOR &