【问题标题】:Running into issues with SQL Error 1111遇到 SQL 错误 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 很陌生,任何建议都会很有帮助。

【问题讨论】:

标签: mysql sql group-by mysql-error-1111


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2016-03-29
      • 1970-01-01
      • 2014-10-28
      相关资源
      最近更新 更多