【问题标题】:error in sql querysql查询错误
【发布时间】:2010-10-11 06:40:15
【问题描述】:

我正在用 sql 编写查询并收到错误:

Invalid use of group function

这是什么意思? 在我的查询中,where 子句如下:

select c.name,s.contact,s.number
from list c , senior s
where c.id = s.id AND c.name = 'Abg' AND c.state ='qw' AND MIN(c.dob);

基本上,我有 2 个文件,我需要从第二个文件中找到年轻客户,然后必须从第一个文件中检索其数据。我在第二个文件中有客户的 ID 号。我首先使用第一个文件的 id 检查 id。并检查其状态和名称。然后我需要在这些客户中找到更年轻的。这就是为什么我需要 MIn 功能。

【问题讨论】:

  • 发布整个查询可能会有所帮助(?)
  • 同意。该错误可能发生在 WHERE 子句之前。可能是一个名为 group 的表或其他什么?
  • 您能提供完整的查询吗?我希望在某个地方找到一个“GROUP BY”子句,从而引发这个错误。
  • 错误在 And MIN(c.dob) 部分。那有什么意思?查找 c.dob... 的最低值不完整的记录。他需要的是使用子查询。

标签: mysql sql mysql-error-1111


【解决方案1】:

您需要使用子查询:

 select c.name,s.contact,s.number
 from  from list c, senior s
 inner join
 (
    select MIN(c.dob) minDob
           ,c.id
    from list c
    where c.id = s.id AND c.name = 'Abg' AND c.state ='qw'
    group by c.id 
 ) sq
 on c.dob = sq.minDob
    and c.id = sq.id

【讨论】:

    【解决方案2】:

    AND MIN(c.dob); 导致错误。

    我认为你应该使用类似的东西:

    c.dob = (select MIN(dob) from c);
    

    【讨论】:

    • “然后我需要在这些客户中找到更年轻的。”暗示在找到 dob 的最小值时应使用 where 约束。
    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 2015-04-22
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多