Mysql SQL查询未按预期返回

Mysql SQL查询未按预期返回,mysql,Mysql,我正试图从两个关系系的学生那里回来,他们已经接受了公司的录用。为了测试查询,我用一小部分记录填充了这些表,但是查询没有正常运行。应用程序状态属性中可能出现4种情况:“已接受报价”、“拒绝报价”、“无报价”、“待定” 我试图计算“录取通知书”和“不录取通知书”的数量,并输出收到2份以上工作邀请的学生的姓名。为什么这不起作用?从逻辑上看应该是这样的 我收到的录取通知书数量计算错误。我收到了4个学生的名字,而我应该只收到1个。如果我添加更多的测试用例,测试用例将继续以相同的方式运行 应用程序关系测试数

我正试图从两个关系系的学生那里回来,他们已经接受了公司的录用。为了测试查询,我用一小部分记录填充了这些表,但是查询没有正常运行。应用程序状态属性中可能出现4种情况:“已接受报价”、“拒绝报价”、“无报价”、“待定”

我试图计算“录取通知书”和“不录取通知书”的数量,并输出收到2份以上工作邀请的学生的姓名。为什么这不起作用?从逻辑上看应该是这样的

我收到的录取通知书数量计算错误。我收到了4个学生的名字,而我应该只收到1个。如果我添加更多的测试用例,测试用例将继续以相同的方式运行

应用程序关系测试数据:

INSERT INTO applications
VALUES (1, 1001, 'Offer Accepted'), (2, 1001, 'Offer Rejected'), (3, 1001, 'No Offer'), (1, 1000, 'No Offer'), (3, 1000, 'Offer Rejected'), (4, 1000, 'Offer Rejected'), (5, 1000, 'Offer Accepted'), (2, 1003, 'Offer Accepted'), (1, 1002, 'Offer Accepted');
学生关系示例数据:

(1000, 'John Smith', 'Electrical Engineering', 3.6)
应用程序关系applicationJID INT NOT NULL,SID INT NOT NULL,appStatus VARCHAR100,主键JID,SID; 学生关系学生SSID INT主键,SName VARCHAR100,Smaj VARCHAR100,gpa浮点


COUNT只返回记录数。发生的情况是,平等性检查appStatus='Offer Accepted'的计算结果为0或1,这取决于它是否为真。然后,count函数只是将0和1的计数相加,而不管值是多少

您可以使用SUM来实际获取1的数量,即此条件为真的记录的数量

SELECT SName
FROM students
INNER JOIN applications ON applications.SID = students.SID
GROUP BY students.SName
HAVING SUM(appStatus = 'Offer Accepted') + SUM(appStatus = 'Offer Rejected') > 2
这应该行得通

SELECT s.SID, SName, COUNT(*)
FROM application a
JOIN students s ON a.SID = s.SID
WHERE appStatus IN ('Offer Accepted', 'Offer Rejected')
GROUP BY s.SID, SName
HAVING COUNT(*) > 1

怎么不工作?您是否收到错误消息?它会带来你意想不到的结果吗?如果是,结果如何?如果你展示样本数据,你也会得到更好的答案。@JoshEller你是对的,我很抱歉,我刚刚意识到我没有说明它是如何工作的。现在编辑。非常感谢。
SELECT s.SID, SName, COUNT(*)
FROM application a
JOIN students s ON a.SID = s.SID
WHERE appStatus IN ('Offer Accepted', 'Offer Rejected')
GROUP BY s.SID, SName
HAVING COUNT(*) > 1