当前位置: 首页 > 面试题库 >

在MySQL SELECT查询中使用IF语句

马安邦
2023-03-14
问题内容

我正在尝试IF在MySQL选择查询中使用一条语句。

我在第一个AND语句之后出现错误IF

SELECT J.JOB_ID,E.COMPANY_NAME,J.JOB_DESC,JT.JOBTYPE_NAME,J.COMPENSATION,ST.STATE_NAME,MC.METRO_CITY_NAME,I.INDUSTRY_NAME,
 J.JOB_CONTACT_PERSON,J.DT_INSRT,J.JOB_TITLE,J.JOB_EXP_DATE,J.SKILLS
 FROM JOBS J 
 JOIN EMPLOYER E ON J.COMPANY_ID=E.COMPANY_ID 
 JOIN LOOKUP_JOBTYPE JT ON J.JOB_TYPE=JT.JOBTYPE_ID
 JOIN LOOKUP_STATE ST ON J.STATE_ID=ST.STATE_ID
 JOIN JOBS_LOCATION JL ON J.JOB_ID=JL.JOB_ID
 JOIN LOOKUP_METRO_CITY MC ON JL.METRO_CITY_ID=MC.METRO_CITY_ID
 JOIN LOOKUP_INDUSTRY I ON J.INDUSTRY_ID=I.INDUSTRY_ID 
 JOIN JOBS_QUALIFICATION JQ ON J.JOB_ID=JQ.JOB_ID 
 JOIN LOOKUP_DEGREE_QUALIFICATION LDQ ON LDQ.QUALIFICATION_ID = JQ.QUALIFICATION_ID
 WHERE  J.ACTIVE='Y' AND J.DT_INSRT > COALESCE(pEmailSntDt,DATE_SUB(SYSDATE(),INTERVAL 4 DAY))  
AND
IF(JQ.COURSE_ID=0) 
THEN
IF(JQ.DEGREE_ID=0)
THEN J.SKILLS LIKE CONCAT('%', pSkills,'%')
ELSE
JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%')
END IF
ELSE
JQ.COURSE_ID=pCourseId OR IF(JQ.DEGREE_ID=0)
                      THEN
                      J.SKILLS LIKE CONCAT('%', pSkills,'%')
                      ELSE
                      JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%')
                      END IF
END IF                           
GROUP BY J.JOB_ID ORDER BY J.DT_INSRT DESC;

为什么这不起作用?在MySQL查询中执行IF语句的正确方法是什么?


问题答案:

您使用的IF / THEN / ELSE构造仅在存储过程和函数中有效。您的查询将需要重组,因为您不能使用IF()函数来控制WHERE子句的流程。

可以在查询中使用的IF()函数主要用于在查询的SELECT部分​​中根据某些条件选择不同的数据,而不必在查询的WHERE部分中使用:

SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS
FROM ...
WHERE ...


 类似资料:
  • 我正在学习一门在线编码课程,该课程导入了appstore上应用程序的大量数据,并要求我们计算出游戏或社交网络应用程序的平均评分。执行此操作时,我意外地键入了if语句,如上图所示: 这是我不明白的,总共有7197个应用程序,如果我使用上面的if语句,我的games\u social\u评级列表的长度是7197。游戏应用程序总数为3862,社交网络应用程序总数为167。7197是从哪里来的?当我输入上

  • 我有一张桌子 我写了一个查询,如 这将在2个科目中得分低于30分的学生的输出为不及格或及格 我想给每门少于30分的科目加7分,然后在加7分后看到那些及格不及格的学生。例如添加7个标记后,rajesh记录应该是这样的

  • 问题内容: 如何在MySQL查询中编写IF ELSE语句? 像这样: 然后在我的数组中,我应该能够做到这一点: 问题答案: 您可能要使用表达式。 他们看起来像这样:

  • 行动时刻 - 在unlang中使用if语句 if语句本身并不复杂。 它具有以下格式: if(condition){ ... } 由于其许多可能性,条件部分可能变得复杂。 使用if语句获取返回码 我们现在将查看模块的返回代码,并使用此代码与指定的条件进行比较。 FreeRADIUS中的每个模块都需要在调用时返回代码。 随后可以将此代码的值用作if语句中的条件检查。 使用if语句授权用户 如

  • 问题内容: 在C语言中,我可以编写一个if语句 但是,当我尝试在Java中执行相同操作时,编译器会告诉我“不兼容的类型”,并说我需要一个而不是一个。有什么方法可以用Java编写C代码吗? 问题答案: 以下任何一项都可以为您工作:

  • 问题内容: 您可以像这样在JSX中使用if语句吗? 像上面的东西?是否可以根据条件使用JSX? 问题答案: 使用条件渲染,并且由于没有其他情况,因此为了简洁起见,可以使用而不是三元运算符: 之所以起作用,是因为在JavaScript中,总会求和,并且总会求和。 因此,如果条件为true,则&&之后的元素将出现在输出中。如果为假,React将忽略并跳过它。 从而: 仅当条件为true时才渲染JSX。