【发布时间】:2011-08-07 00:10:15
【问题描述】:
我们有一个这样的数据库:
CREATE TABLE `jobs` (
`id` int NOT NULL AUTO_INCREMENT,
`job` varchar(255),
PRIMARY KEY (`id`)
);
INSERT INTO `jobs` VALUES
(1,'a'),
(2,'b'),
(3,'c'),
(4,'d');
CREATE TABLE `payments` (
`job_id` int,
`amount` int
);
INSERT INTO `payments` VALUES
(1,100),
(1,100),
(2,600),
(2,600);
我们的任务是:
获取所有支付金额小于 1000 的工作。
因此,我们应该作业 'a'、'c' 和 'd'。但我们的查询:
SELECT job
FROM jobs j
JOIN payments p ON j.id=p.job_id
GROUP BY job_id
HAVING sum(amount) < 1000;
不包括没有任何报酬的工作。所以结果我们只得到'a'。
我们应该如何构造查询以获取付款总和小于 1000 的所有工作?
【问题讨论】: