Mysql 如何修复';子查询返回超过1行';使用变量表
我有一个表Mysql 如何修复';子查询返回超过1行';使用变量表,mysql,Mysql,我有一个表原始分数,其中包含一系列家庭作业/考试分数。RAW_SCORES中有一行包含每个作业的最高分数 ('6410', 'Rivera', 'Rhonda', '315', 64, 64, 28, 85, 98, 152), ('0001', 'MAX', 'POINTS', '415', 100, 80, 32, 100, 120, 200), 我想创建一个过程,为每个作业打印一个带有(原始分数/最大分数)的表。因此,对于任务1: SET hw1M = (SELECT
原始分数,其中包含一系列家庭作业/考试分数。RAW_SCORES
中有一行包含每个作业的最高分数
('6410', 'Rivera', 'Rhonda', '315', 64, 64, 28, 85, 98, 152),
('0001', 'MAX', 'POINTS', '415', 100, 80, 32, 100, 120, 200),
我想创建一个过程,为每个作业打印一个带有(原始分数/最大分数)的表。因此,对于任务1:
SET hw1M = (SELECT HW1 FROM RAW_SCORES WHERE (SSN = '0001'));
SELECT RAW_SCORES.SSN,
RAW_SCORES.FName,
RAW_SCORES.LName,
ROUND(RAW_SCORES.HW1 / hw1M, 2)
FROM RAW_SCORES WHERE NOT (RAW_SCORES.SSN = '0001' OR RAW_SCORES.SSN = '0002');
给出了HW1的正确结果,但表头显示为Round(bla-bla-bla),问题希望将其打印为HW1Pct。所以我试着:
SET hw1M = (SELECT HW1 FROM RAW_SCORES WHERE (SSN = '0001'));
SET HW1Pct = (SELECT ROUND(RAW_SCORES.HW1 / hw1M, 2) FROM RAW_SCORES WHERE hw1M IN (SELECT HW1 FROM RAW_SCORES WHERE (SSN = '0001')));
SELECT RAW_SCORES.SSN,
RAW_SCORES.FName,
RAW_SCORES.LName,
HW1Pct
FROM RAW_SCORES WHERE NOT (RAW_SCORES.SSN = '0001' OR RAW_SCORES.SSN = '0002');
但是这给了我子查询返回超过1行的错误。这个错误的大多数其他答案是一个JOIN
语句,但我不确定在我的例子中如何实现它。感谢您的帮助。抱歉,这是一个愚蠢的问题。只需在原始查询中添加列别名即可:
ROUND(RAW_SCORES.HW1 / hw1M, 2) AS HW1Pct
见