关于 用函数的返还值 做 if判断条件的问题

先上代码,有些不重要,直接拉下去看问题

 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
#define namesize 15

typedef struct Seq
{  int  number[MAXSIZE];
  char name[MAXSIZE][namesize];
   char address[MAXSIZE][namesize];
   int top; 


}SeqStack;


_int judge (SeqStack *seq)
{   if( seq->top>  MAXSIZE-1 )
        {  //printf("full"); return 1;
        }
    else 
    return -1;  
}


SeqStack input(SeqStack *seq )
{ 

    while(1)
    {
**  _   if( judge (seq ) )_**
        {  printf("此判断成立");   return *seq;  }
        seq->top++;  
        scanf("%d,%s,%s",seq->number[seq->top],seq->name[seq->top],seq->address[seq->top] );
        if(seq->number[seq->top]==-2)
        {  seq->top--;
           return *seq;
        }


    }

}_

int main (void)
{   struct Seq work;

    work.top=-1;
     printf(" if you want to over input,input -1 \n");
    input( &work );



}

图片说明

重点只要看我截图的部分俩个区域看书就行了

judge 是判断 栈满,input是输入函数
初始的 top是-1

if( judge (seq ) )条件一开始就成立了?!?!
但是我输入 printf(“%d”,judge (seq )显示结果是-1,并且就应该是-1

解决方法有,但我想知道为什么。。。用的vs2010

感觉是vs的问题?关于if的或者。。。

0

3个回答

查看条件判断,“-1”为真,

1

c中if的判断,数值型,只有0时才是假,非0都是真

1

c中的if判断没有写明,默认是数值,0为真,否则为假

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
swift函数作为返回值
1.返回(多个参数的函数类型)的函数如下:         func  makeIncrementer() -> ((Int,Int) ->Void){             func addOne(number:Int , number2:Int) ->Void{                    print("函数内部打印" +String(number + number2
Extjs DatePicker 返还值的问题.
我是比较初级的extjs user, 我想在一个grid里面, 点击一个button, 就会弹出一个窗口, 里面有两个Ext.DatePicker: Start Date 和 End Date. 然后有一个OK, 和一个Cancel button. 请问对这种标准的模块, 有没有现成的例子参考? 我怎么样从弹出窗口里返还选中的Start Date 和 End Date 到我的grid 里面? 多谢指点.
for循环的条件判断中为什么用'!='而不用'<'
感学原作者分享,原文地址:http://blog.csdn.net/njnu_mjn/article/details/7648730 翻阅《C++ Primer中文版(第4版)》,里面出现的for大多都是类似如下的循环: [cpp] view plain copy  print? vectorint> ivec(10);   for (ve
devc++中scanf无报错的出错点 —— &的遗漏
C语言scanf的注意点 格式:scanf(格式控制,输入地址列表) scanf函数中一般的,最容易出错,而且出错但还可能找不出错,那就是取地址符号&amp;amp;的丢失。 并没有使用取地址符号,而且还没有报错。 运行一下 之后就会出现卡住的情况。如果在用scanf中出现这种状况,小伙伴就要考虑有没有加 &amp;amp; 。 ...
函数的形参与返回
函数中形参与实参的传递实质: 函数在调用时,会把实参变量的值复制给形参变量,即实参与形参是两个不同的变量。形参的变量在函数返回后释放内存 ①改变形参指针的值: 实参和形参的值都为内存地址,指向同一个内存空间,当形参改变后,即形参指向的内存地址改变后,并不会影响到实参。 ②改变形参指针指向的内存: 实参和形参的值都为内存地址,指向同一个内存空间,当形参直接改
cin、!cin作为条件判断原理分析
在判断文件打开成功与否或是连续从流中读取数据时,就要用到对流对像的操作,比如 if(!cin) 或是 whie(cin) 。对于 while(cin&amp;gt;&amp;gt;val),cin 是一个流对象,而&amp;gt;&amp;gt;运算符返回左边的流对象,也就是说 cin&amp;gt;&amp;gt;val 返回 cin,于是 while(cin&amp;gt;&amp;gt;val) 就等于是 while(cin),问题就变成了一个流对象在判...
赋值语句作为if的判断条件
具体如下代码所示: char name[]="xiaopingguo"; if(char *p=NULL) cout if(char *p=&name[1]) cout" 主函数中,进行到第一个if语句时,是不会有输出的;第二个if语句则输出“i” 也就是说:并不是赋值成功了就为真,而是要看赋值的内容是否为真(非NULL,大于0) 另外: struct temp {
BOOL,指针,int作为判断条件,在代码中的实现
一、BOOL与0值得比较 规则:不可将BOOL型变量直接与TRUE,FALSE,1,0比较。 根据BOOL型变量的定义,零值为假(记为FALSE),非零值都为真。 假设BOOL型变量名为flag,它与零值比较的标准If语句为:if(flag)//表示flag为真,if(!flag)//表示flag为假 其他的都属于不良风格: if(flag == TRUE) if(flag == FA
MySQL函数-条件判断函数
1、IF(expr,v1,v2)函数 如果表达式expr成立,返回结果v1;否则,返回结果v2。 SELECT IF(1 &amp;gt; 0,'正确','错误') -- 正确 2、IFNULL(v1,v2)函数 如果v1的值不为NULL,则返回v1,否则返回v2。 SELECT IFNULL(null,'Hello Word') -- Hello Word 3、CASE  语法1: CASE    WH...
求解count返回值!
求解count返回值!#include int func() { int count= 0; int x=9999; while(x) { count ++; x = x&(x-1); } return count; } int main() { int n = func(); return 0; } 利用断点调试总共执行8次: 1、x=9998 2、x=9996
snprintf()函数的返回值
The functions snprintf() and vsnprintf() do not write more than size bytes (including the  ter‐        minating  null  byte  ('\0')).   If  the output was truncated due to this limit then the return
html页面如何获得js函数返还值?
页面idcar.js用来判断身份证号码有效性。如下rn[code=javascript]rnrn// 构造函数,变量为15位或者18位的身份证号码rn// by http://www.jbxue.comrnfunction clsIDCard(CardNo) rn this.Valid=false;rn this.ID15='';rn this.ID18='';rn this.Local='';rn if(CardNo!=null)this.SetCardNo(CardNo);rnrnrn// 设置身份证号码,15位或者18位rnclsIDCard.prototype.SetCardNo = function(CardNo) rn this.ID15='';rn this.ID18='';rn this.Local='';rn CardNo=CardNo.replace(" ","");rn var strCardNo;rn if(CardNo.length==18) rn pattern= /^\d17(\d|x|X)$/;rn if (pattern.exec(CardNo)==null)return;rn strCardNo=CardNo.toUpperCase();rn else rn pattern= /^\d15$/;rn if (pattern.exec(CardNo)==null)return;rn strCardNo=CardNo.substr(0,6)+'19'+CardNo.substr(6,9)rn strCardNo+=this.GetVCode(strCardNo);rn rn this.Valid=this.CheckValid(strCardNo);rnrnrn// 校验身份证有效性rnclsIDCard.prototype.IsValid = function() rn return this.Valid;rnrnrn// 返回生日字符串,格式如下,1981-10-10rnclsIDCard.prototype.GetBirthDate = function() rn var BirthDate='';rn if(this.Valid)BirthDate=this.GetBirthYear()+'-'+this.GetBirthMonth()+'-'+this.GetBirthDay();rn return BirthDate;rnrnrn// 返回生日中的年,格式如下,1981rnclsIDCard.prototype.GetBirthYear = function() rn var BirthYear='';rn if(this.Valid)BirthYear=this.ID18.substr(6,4);rn return BirthYear;rnrnrn// 返回生日中的月,格式如下,10rnclsIDCard.prototype.GetBirthMonth = function() rn var BirthMonth='';rn if(this.Valid)BirthMonth=this.ID18.substr(10,2);rn if(BirthMonth.charAt(0)=='0')BirthMonth=BirthMonth.charAt(1);rn return BirthMonth;rnrnrn// 返回生日中的日,格式如下,10rnclsIDCard.prototype.GetBirthDay = function() rn var BirthDay='';rn if(this.Valid)BirthDay=this.ID18.substr(12,2);rn return BirthDay;rnrnrn// 返回性别,1:男,0:女rnclsIDCard.prototype.GetSex = function() rn var Sex='';rn if(this.Valid)Sex=this.ID18.charAt(16)%2;rn return Sex;rnrnrn// 返回15位身份证号码rnclsIDCard.prototype.Get15 = function() rn var ID15='';rn if(this.Valid)ID15=this.ID15;rn return ID15;rnrnrn// 返回18位身份证号码rnclsIDCard.prototype.Get18 = function() rn var ID18='';rn if(this.Valid)ID18=this.ID18;rn return ID18;rnrnrn// 返回所在省,例如:上海市、浙江省rnclsIDCard.prototype.GetLocal = function() rn var Local='';rn if(this.Valid)Local=this.Local;rn return Local;rnrnrnclsIDCard.prototype.GetVCode = function(CardNo17) rn var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);rn var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');rn var cardNoSum = 0;rn for (var i=0; irnrnrn rn 身份证号码验证rn rnrnrnrn rn身份证号: 出生日期 :rnrnrn性别:rnrnrnrnrn[/code]
20 协助完成返还值最优(RVO)
一个返回对象的函数很难有较高的效率,因为值传递返回会导致对象的构造和析构的成本,这种调用不可避免。 考虑rational(有理数)类的成员函数operator*: class Rational { public: Rational(int numerator = 0,int denominator = 1); ... int numerator() const; int deno...
SQL 存储过程没有返还值,为什么
vc++ 2005 MFC, SQLServer 2005 用户登录后运行数据库中的存储过程pLoginCheck,然后pLoginCheck应该返还值。但我运行后发现没有返还值,这到底是为什么?下面分别是vc代码和数据库存储过程代码rn[code=C/C++]tryrn rn TESTHR(pConnection.CreateInstance(__uuidof(Connection))); rn hr = pConnection->Open(strCnn,"","",NULL); rn (cmmd.CreateInstance(__uuidof(Command))); rn rnrn param = cmmd->CreateParameter(_T("")/*UserName*/,adVarChar,adParamInput,strUserName.GetLength()+1,_variant_t(strUserName)); rn cmmd->Parameters->Append(param); rn param = cmmd->CreateParameter(_T("")/*LoginPWD*/,adVarChar,adParamInput,strLoginPWD.GetLength()+1,_variant_t(strLoginPWD)); rn cmmd->Parameters->Append(param); rn param = cmmd->CreateParameter(_T("")/*FactoryID*/,adVarChar, adParamInput,strFactoryID.GetLength()+1,_variant_t(strFactoryID)); rn cmmd->Parameters->Append(param); rn param = cmmd->CreateParameter(_T("")/*LineID*/,adVarChar,adParamInput,strLineID.GetLength()+1,_variant_t(strLineID)); rn cmmd->Parameters->Append(param);rn //Return pararn param = cmmd->CreateParameter(_T("Result")/*Result*/,adVarChar, adParamOutput,50,_variant_t(strResult)); rn cmmd->Parameters->Append(param);rn param = cmmd->CreateParameter(_T("Year")/*Year*/,adVarChar,adParamOutput,50,_variant_t(strYear)); rn cmmd->Parameters->Append(param);rn param = cmmd->CreateParameter(_T("Model")/*Model*/,adVarChar,adParamOutput,50,_variant_t(strUBMModel)); rn cmmd->Parameters->Append(param);rn param = cmmd->CreateParameter(_T("Material")/*Material*/,adVarChar,adParamOutput,50,_variant_t(strMaterial)); rn cmmd->Parameters->Append(param);rn param = cmmd->CreateParameter(_T("SoftwareVer")/*SoftVer*/,adVarChar,adParamOutput,50,_variant_t(strSoftVer)); rn cmmd->Parameters->Append(param);rn param = cmmd->CreateParameter(_T("CalibrationVer")/*CalVer*/,adVarChar,adParamOutput,50,_variant_t(strCalVer)); rn cmmd->Parameters->Append(param); rn rn cmmd->CommandText=_bstr_t(_T("pLoginCheck")); rn cmmd->ActiveConnection = pConnection; rn cmmd->CommandType=adCmdStoredProc; rn rn cmmd->Execute(NULL, NULL, adCmdStoredProc); rnrn strResult=cmmd->Parameters->GetItem(_T("Result"))->GetValue(); rn rn rn if (strResult==_T("Fail"))rn rn cmmd.Detach(); rn GetDlgItem(IDC_Status)->SetWindowTextA(_T("Error:Login Fail!"));rn m_lbStatus.SetTextColor(RGB(255,0,0));rn return;rn rn elsern rnAfxMessageBox(_T(strMaterial));//这里显示是空,为什么????? GetDlgItem(IDC_Status)->SetWindowTextA(_T("Login Success!"));rn rn [/code]rnrn数据库代码rn[code=SQL]ALTER PROCEDURE [dbo].[pLoginCheck] rn -- Add the parameters for the stored procedure herern @UserName NVARCHAR(50),rn @LoginPWD NVARCHAR(50),rn @FactoryID NVARCHAR(50),rn @LineID NVARCHAR(50),rn @Result AS NVARCHAR(50) OUTPUT,rn @Year AS NVARCHAR(50) OUTPUT,rn @Model AS NVARCHAR(50) OUTPUT,rn @Material AS NVARCHAR(50) OUTPUT,rn @SoftwareVer AS NVARCHAR(50) OUTPUT,rn @CalibrationVer AS NVARCHAR(50) OUTPUTrnASrn rn -- SET NOCOUNT ON added to prevent extra result sets fromrn -- interfering with SELECT statements.rn SET NOCOUNT ON;rn rn IF exists rn (SELECT * FROM dbo.Login_EOLrn where cast([LoginName] as varbinary)=cast(@UserName as varbinary) rn and cast([FactoryID] as varbinary)=cast(@FactoryID as varbinary)rn and cast([Password] as varbinary)=cast(@LoginPWD as varbinary) rn and Effect='Y')rn rn IF exists rn (SELECT * FROM dbo.Factory_Line_EOLrn where cast([LineID] as varbinary)=cast(@LineID as varbinary) rn and cast([FactoryID] as varbinary)=cast(@FactoryID as varbinary)rn and Effect='Y')rn BEGINrn (SELECT @Year = '2011',@Model = [Model],@SoftwareVer = [SoftwareVer],@CalibrationVer = [CalibrationVer], @Material=[Material] FROM dbo.Factory_Line_EOLrn where cast([LineID] as varbinary)=cast(@LineID as varbinary) rn and cast([FactoryID] as varbinary)=cast(@FactoryID as varbinary)) rn rn SET @Result='Pass' rn ENDrn else rn SET @Result='Fail' rn else rn SET @Result='Fail'[/code]
for(;;)函数中判断条件执行顺序
for(i=100;i&amp;gt;=0;--i) {      cout&amp;lt;&amp;lt;&quot;i=&quot;&amp;lt;&amp;lt;i&amp;lt;&amp;lt;endl;   } 它的执行过程如下: 1)        先求解表达式1。 2)        求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。 3)        求解表达式...
我为什么不喜欢用异或做两数值的交换
大家在初学编程的过程中,肯定会学习到使用代码去交换两元素的值虽然已经过去了很久,但笔者对当时老师上课所讲的话记忆犹新:“交换两个值,就像是把醋瓶子里的酒装入酒罐,把酒罐子里的醋倒入醋瓶。要完成此任务,就要多找一个空瓶子,作为两者的交换的暂存罐”同理,代入代码中,我们可以多定义一个变量,作为数值的“暂存罐”int a = 5; int b = 3; int tmp; tmp = a; a = b;...
MYSQL中有关SUM字段按条件统计使用IF函数(case)问题
select  sum(cost_price*IF(goods_count>1,goods_count,1)) as sum_money from goods  where type=1 ; 如何数量大于1的话,就用数量乘以商品的价格,否则就是默认商品数量是1.
【python】if 条件判断 +字符串的{}填空+(一个用户登陆及修改密码的例子)
博客已经搬家到“捕获完成”: https://www.v2python.com 1、单条件控制 2、多条件控制(这个很重要,掌握了这个,就掌握了上一个的原理和用法) 3、具体的一个例子: 4、接下来,是我自己写的关于一个登陆验证的程序: #千万要记住要把这个初始的列表放到函数体外 passwd =['change','123456'] def...
二维数组作为函数参数问题
二维数组实际上是一种特殊的一维数组,它的每个元素也是一个一维数组。数组元素是按照行顺序存储的。将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列。通常有两种方式声明函数原型:1、int sum(int (*ar2)[4],int ...
【C++】取值范围判断条件和错误防范(优秀的编程习惯)
第一部分: 比如取年龄大于17小于35,也就是17~35之间范围,如何编写?  正确使用: if(age &amp;gt;17 &amp;amp;&amp;amp; age &amp;lt;35)  //OK  这样是正确的,并且最佳当的 不要使用如下: if( 17 &amp;lt; age &amp;lt; 35 )   //error  编辑器不会捕捉这样的错误,但是它仍是有效地语法,等同于下面语句 if( ( 17 &amp;lt...
Java学习~素数判断
要求:使用for循环和if条件语句嵌套判断          对正整数n,如果用2到 根号n之间的所有整数去除,均无法整除,则n为质数。 package sushu; public class sushu { public static void main(String[] args) { int n = Integer.parseInt(args[0]);/...
JavaScript——解决javascript循环后 i 为固定值(循环的最后一项)
如果在循环中添加了等待触发事件(如click()),循环不会在执行过程等待事件触发,而是会直接完成数组的循环,最后的循环项 i 值会成为数组的长度 for(var i=0;i&amp;amp;amp;lt;tagN.length;i++){ tagN[i].onclick=function(){ console.log(i) //输出 i 的最大值6 } } 如果希望可以在点击事...
jstl 多个判断条件正确的写法
jstl 多个判断条件正确的写法
关于JS的判断条件的问题
[img=https://img-bbs.csdn.net/upload/201510/15/1444894877_212068.png][/img]rn如图显示我在点批量移除的时候,没有选择对象弹出提示。rn这是原来的代码提示。但是我现在改成了rn[code=javascript]function doAction(dgid, rpk, url, msg) rnvar data = getChecked(dgid, rpk);rnif (!data.trim().length) rn$.messager.alert("警告", "请选择一条数据");rnrnelse rn$.post(url, data: data, function(result) rnif (result.success == true)rn$(dgid).datagrid('reload'); // reload the user datarn rnelse rn$.messager.alert("Error", msg);rnrn, 'json');rnrn[/code]rn$.messager.alert("警告", "请选择一条数据");我已经该成了中文了··他还是显示原来的英文提示rn基本上刷新,重新登录,重新部署,关闭eclipse,重启电脑。。。。能试的都试··就差重装系统了rn求大大帮忙解决。快疯了·在线等[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/33.gif][/img]
count()函数里面想实现带条件统计,可以使用SUM函数来进行替换
count()函数里面想实现带条件统计,可以使用SUM函数来进行替换,具体可以使用case when 语句或者Decode函数来对要统计的数据进行0、1转换, 如下例子: SELECT s.user_id,SUM(case(m.is_success) when 1 then 1 else 0 end),SUM(case when m.read_time IS NULL then 0 ...
mysql 中sum 求和中加if 判断
语法如下: //求和: 计算出记录集中 paystatus=1 的 paycost 的和。 SELECT  sum(IF(`paystatus`=1,`paycost`,0))as a  FROM `table`
while循环与if条件判断
对于一个字符串,先输出它的大写字母,再输出它的小写字母 错误做法: char a[]="hElASFGoo"; char* p; char* q; char c; p=a; while(*p) { if(*p>=65&&*p {    *k++=*p++;  } 错误原因:因为判断小写字母的循环与判断大写字母的循环是同一个,所以,比如:当第二个字母是E时,进入下一个if
C++入门教程(六):布尔和判断运算
小古银的官方网站(完整教程):http://www.xiaoguyin.com/ C++入门教程视频:https://www.bilibili.com/video/av20868986/ 目录 目录 只有两个值的基本数据类型:布尔 比较运算符 基础示例 基础讲解 逻辑运算符 基础示例 巩固练习 只有两个值的基本数据类型:布尔 基本数据类型bool是一个比较有趣的...
关于Java判断条件的问题
![图片说明](https://img-ask.csdn.net/upload/201704/21/1492779195_932110.png)n做个判断条件,让PGID与ChannelID的值只出现一条,另外一条相同的不能添加,求一个if判断
while和if判断条件小认识
之前查代码定位问题时对while和if中判断条件有疑惑,后来自己验证了,现记录如下,代码很low,别介意。 while.c代码如下所示: include include
使用Matlab生成中心对称图形
img = zeros(256,256,'uint8'); for ii = 1:256 img(:,ii)= ii-1; end imwrite(img,'gray-level256.bmp'); imwrite(img,'gray-level256.png'); imwrite(img,'gray-level256.jpg','Quality',0); img_bmp = imrea...
没有return的lisp自定义函数返回值解释跟python自定义函数比较
对于编程语言来说,表达式和赋值是最重要的了,表达式被求值器求值后通过赋值符号传递给变量。 lisp是表达式函数语言,每一个()都是一个表达式,括弧里第一个是操作符,后面跟若干个操作数,比如(+ 1 2 3)。所有程序设计时用的函数,一个输入必然有一个输出也即是返回值,函数的定义有些语言用{}作为语句块(即复合语句),比如C语言;有些用冒号(:)来作为语句块的开始,用未缩进表示结束,比如pytho...
java if条件判断语句
/* if 语句: 编写格式 if(条件){ if语句执行体 } 条件:必须是boolean类型 1==1 true||false 执行体:if条件为真,执行大括号中的执行体 为假 什么也不做 跳过 注意 无 ; 符号...
document.getElementById做判断条件
代码如下:rnfunction gid(id) rn return document.getElementById?document.getElementById(id):null;rnrnrn其中,document.getElementById? 是要判断什么????
二重积分中关于对称性问题的思考
对称性在积分中可以说是一个非常重要的问题,可以为解题带来很大的简便。对于不同的积分对称性的使用也是不一样的,最特殊的应该是第二型曲面积分。偶0奇倍。 还有对于第一型曲面积分来说,投影前通常要考虑投影是否重合的问题,此处用到的也是对称性。 本篇文章专注于二重积分中对称性的探讨,并给出几道经典的题目作为结尾。 1.普通对称性 对于普通对称性,观察积分区域与被积函数的关系。 若现在的积分区域是...
c++游戏开发中用到的函数
memset()函数 函数原型:void * memset( void * ptr, int value, size_t num ); 功能:将ptr所指向的某一块内存中的每个字节的内容全部设置为value指定的 memset(m_TCalculateBoard,0,sizeof(m_TCalculateBoard)); memset(&Tsendcardfinish, 0,sizeo
Oracle-常用通用函数、条件判断函数和多行函数
Oracle-常用通用函数、条件判断函数和多行函数本文中用到的表: 通用函数通用函数就是可以作用于任何类型的函数(参数类型可以是number或varchar2或date类型)1)NVL(a,b) 如果a为null值,则取b为返回结果,否则返回a。2)NVL2(a,b,c) 如果a为null, 则结果为b, 否则结果为c。3)NULLIF(a,b) 在类型一致的情况下,如果a与b相同,返回NU
关于节流阀的思路
关于节流阀的理解​ 前言:总是感叹于自己的记性真的和鱼一样。果然像我这样平凡的人,还是只能靠烂笔头啊。今天记录一下节流阀的思想,和实现方法。想象一下有一个开关,控制着动画的运行。就像阀一样,阀开着水才能流出。同样的,我们也可以设一个(阀)flag=true;。在事件的开头处,判断if(flag){flag=false;do somenthing}阀打开的情况下运行函数,并且把开着的水龙头关掉fl
oracle 查询的时候加条件判断
方法一.select a.idcard,SUM(CASE WHEN a.subject_code=2 THEN a.SCOPE ELSE 0 END) ,SUM(CASE WHEN a.subject_code=3 THEN a.SCOPE ELSE 0 END),SUM(CASE WHEN a.subject_code=4 THEN a.SCOPE ELSE 0 END),SUM(CASE ...
MySQL条件判断函数
1.IF(expr, v1, v2)函数 如果expr成立,返回值为v1,否则返回v2mysql> select if(1>2,2,3), -> if(1<2,'yes','no'), -> if(strcmp('test','test1'),'no','yes'); +-------------+--------------------+---------------------