Mysql 通过显示错误结果按名称顺序分组

Mysql 通过显示错误结果按名称顺序分组,mysql,sql,group-by,Mysql,Sql,Group By,我写的这个查询列出了销售竞争中的前25名,显示的结果是错误的 用户没有表现出这一点,这一点在列表中应该排得很靠前。你知道问题是什么吗 SELECT u.fname, u.lname, SUM(p.point) as points FROM comp_sale s, comp_product p, comp_user u WHERE s.prod_id = p.product_id AND s.sale_id = u.wp_id GROUP BY lname ORDER B

我写的这个查询列出了销售竞争中的前25名,显示的结果是错误的

用户没有表现出这一点,这一点在列表中应该排得很靠前。你知道问题是什么吗

SELECT u.fname, u.lname, SUM(p.point) as points 
  FROM comp_sale s, comp_product p, comp_user u
 WHERE s.prod_id = p.product_id 
   AND s.sale_id = u.wp_id 
 GROUP BY lname 
 ORDER BY points DESC limit 25
表comp_用户:

user_id int(11) NO  PRI NULL    auto_increment
fname   varchar(255)    NO      NULL    
lname   varchar(255)    NO      NULL    
storename   varchar(255)    NO      NULL    
city    varchar(255)    NO      NULL    
phone   varchar(255)    NO      NULL    
wp_id   int(11) NO      NULL    
type    varchar(255)    NO      NULL    
表comp_销售

prod_id int(11) NO      NULL    
sale_id int(11) NO      NULL    
serial  varchar(255)    NO      NULL    
表comp_产品

product_id  int(11) NO  PRI NULL    auto_increment
description varchar(255)    NO      NULL    
type    varchar(255)    NO      NULL    
cylinda_num int(11) NO      NULL    
eel_num int(11) NO      NULL    
point   int(11) NO      NULL    

尝试使用正确的ANSI标准分组方式

SELECT
    u.fname, u.lname, SUM(p.point) as points
FROM 
    comp_sale s
    JOIN
    comp_product p ON s.prod_id = p.product_id 
    JOIN
    comp_user u ON s.sale_id = u.wp_id
GROUP BY
    u.fname, u.lname
ORDER BY 
    points DESC 
LIMIT 25

此外,为了清晰起见,请使用显式联接

SELECT
    u.fname, u.lname, SUM(p.point) as points
FROM 
    comp_sale s
    JOIN
    comp_product p ON s.prod_id = p.product_id 
    JOIN
    comp_user u ON s.sale_id = u.wp_id
GROUP BY
    u.fname, u.lname
ORDER BY 
    points DESC 
LIMIT 25
此外,为了清晰起见,请使用显式连接

回答我自己的问题: 我不是按
fname
lname
进行分组,而是只按
lname
进行分组

SELECT fname, lname, SUM(point) as points FROM cylinda_sale s, cylinda_product p, cylinda_user u  WHERE s.prod_id = p.product_id AND s.sale_id = u.wp_id GROUP BY lname, fname ORDER BY points DESC limit 25;
回答我自己的问题: 我不是按
fname
lname
进行分组,而是只按
lname
进行分组

SELECT fname, lname, SUM(point) as points FROM cylinda_sale s, cylinda_product p, cylinda_user u  WHERE s.prod_id = p.product_id AND s.sale_id = u.wp_id GROUP BY lname, fname ORDER BY points DESC limit 25;

你为什么按lName分组?我相信这就是你不正确结果的原因。is Not查询应该是
按u.lname排序按p.points分组
为什么要按lname分组?我相信这就是你不正确结果的原因。ISN NOT查询应该类似于
GROUP BY u.lname ORDER BY p.points