Mysql 通过显示错误结果按名称顺序分组
我写的这个查询列出了销售竞争中的前25名,显示的结果是错误的 用户没有表现出这一点,这一点在列表中应该排得很靠前。你知道问题是什么吗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
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