首页 > 解决方案 > 如何在 SQL Select 语句中编写条件

问题描述

我有一个相当长的 SQL 查询来从存储过程中写入的数据库中提取一些值。我正在传递一个名为 studenttype 的 IN 参数,该参数将 =0 或 =1。

如果瞳孔类型值 = 1,我需要查询中的一行是:

 AND tbl_4.status=1

但如果瞳孔类型值为 0,则需要为:

 AND (tbl_4.status=0 OR tbl_5.ID IS NOT NULL)

我可以为整个查询设置一个条件,但这意味着重复了许多其他感觉不必要的代码行。有没有办法将此条件语句放在 SQL 语句本身中,就在这一行周围以运行不同的 AND 语句?

例如...:

WHERE tbl_1.sID=sID
    AND tbl_2.spID=spID 
    AND tbl_3.progress!=''
    AND tbl_4.status=1; // It's this line I need to be varied...

干杯

标签: mysqlsqlstored-procedures

解决方案


像这样的东西:

( (pupiltype = 0 and tbl_4.status = 1) or
  (pupiltype = 1 and (tbl_4.status = 0 OR tbl_5.ID IS NOT NULL))
)

推荐阅读