mysql增量变量用例

mysql增量变量用例,mysql,case,Mysql,Case,我有两个表分数和考试 在分数表中,我有studentid,mark1,mark2和examid-不同考试的外键 我想在一次查询中获得不同的学生id和他们的失败次数 失败的条件是mark1+mark2试试这个。您不需要使用变量来帮助您 select m.studentid, sum(case when m.mark1 + m.mark2 < 50 or m.mark1 < 30 then 1 else 0 end) as failures from marks

我有两个表
分数
考试

分数
表中,我有
studentid
mark1
mark2
examid
-不同考试的外键

我想在一次查询中获得不同的学生id和他们的失败次数


失败的条件是
mark1+mark2试试这个。您不需要使用变量来帮助您

select 
    m.studentid,
    sum(case when m.mark1 + m.mark2 < 50 or m.mark1 < 30 then 1 else 0 end) as failures
from
    marks m inner join exams e
on
    m.examid = e.examid
group by
    m.studentid
选择
m、 学生,
总和(当m.mark1+m.mark2<50或m.mark1<30时,则为1,否则为0结束)作为故障
从…起
标记m内部连接e
在…上
m、 examid=e.examid
分组
m、 学生
case
语句计算结果是否失败,并返回1表示失败,0表示不失败。将
studentid
编辑的该(
的结果)相加,即可得出每个studentid的失败次数


哦,连接使两个表之间的连接更有效:)

试试这个。您不需要使用变量来帮助您

select 
    m.studentid,
    sum(case when m.mark1 + m.mark2 < 50 or m.mark1 < 30 then 1 else 0 end) as failures
from
    marks m inner join exams e
on
    m.examid = e.examid
group by
    m.studentid
选择
m、 学生,
总和(当m.mark1+m.mark2<50或m.mark1<30时,则为1,否则为0结束)作为故障
从…起
标记m内部连接e
在…上
m、 examid=e.examid
分组
m、 学生
case
语句计算结果是否失败,并返回1表示失败,0表示不失败。将
studentid
编辑的该(
的结果)相加,即可得出每个studentid的失败次数


哦,这种连接使两个表之间的连接更加有效:)

您不需要变量@arrear。您可以只使用查询获取您的信息

试试这个:

select
    distinct t1.studentid,
    sum(
        case
            when (t1.mark1+t1.mark2) <50 OR t1.mark1 < 30
            then 1
            else 0
        end
    ) as failures
from  marks t1, exams t2
where t1.examid = t2.examid group by t1.studentid;
选择
学生,
总数(
案例

当(t1.mark1+t1.mark2)时,不需要变量@arrear,只需查询即可获得信息

试试这个:

select
    distinct t1.studentid,
    sum(
        case
            when (t1.mark1+t1.mark2) <50 OR t1.mark1 < 30
            then 1
            else 0
        end
    ) as failures
from  marks t1, exams t2
where t1.examid = t2.examid group by t1.studentid;
选择
学生,
总数(
案例

何时(t1.mark1+t1.mark2)您不需要在此处使用
DISTINCT
,因为您是在
studentid
上分组的。您将只得到每个学生一行。谢谢您的回复。您的查询给出了正确的结果。您不需要在此处使用
DISTINCT
,因为您是在
studentid
上分组的。您将只得到每个学生一行。t感谢您的回复。您的查询给出了正确的结果。感谢Joe Taras的回复。您的查询给出了正确的结果。感谢Joe Taras的回复。您的查询给出了正确的结果。