在MySQL中,我有两个表。首先是成员。其次是member_experience。 member_experience表包含成员获得的所有XP的值以及他们获得的XP的值。我想编写一个查询,通过它们的xp总和来选择成员和订单结果。我写的查询不会返回任何结果。
CREATE TABLE IF NOT EXISTS `members` ( `member_id` int(15) NOT NULL AUTO_INCREMENT, `group_id` int(15) NOT NULL, `display_name` text NOT NULL, `email_address` text NOT NULL, `password` text NOT NULL, `status` tinyint(1) NOT NULL, `activation_code` varchar(16) NOT NULL, `date_joined` text NOT NULL PRIMARY KEY (`member_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `member_experience` ( `experience_id` int(15) NOT NULL AUTO_INCREMENT, `member_id` int(15) NOT NULL, `value` mediumint(6) NOT NULL, `description` text NOT NULL, `date_earned` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`experience_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这是我目前的查询:
SELECT m.member_id, xp.member_id, SUM(xp.value) AS total_xp FROM members AS m LEFT JOIN member_experience AS xp ON (xp.member_id = m.member_id) ORDER BY total_xp";
答案 0 :(得分:0)
这将做的事情:
SELECT
members.member_id,
total_xp.sum_xp
FROM
members
LEFT JOIN
(SELECT
member_id,
SUM(value) AS sum_xp
FROM
member_experience
GROUP BY
member_id) AS total_xp
ON members.member_id = total_xp.member_id
ORDER BY
total_xp.sum_xp
答案 1 :(得分:0)
试试这个:
SELECT
m.member_id,
xp.member_id, SUM(xp.value) AS total_xp
FROM
members AS m
LEFT JOIN
member_experience AS xp ON xp.member_id = m.member_id
GROUP BY
m.member_id
ORDER BY
SUM(xp.value)