SQL服务器:如何在where中设置if条件

SQL Server: how to set if condition in where

我需要一些有关 SQL 服务器查询的帮助。我有三个 tables 文档、模块和文件夹。

Document table

Id Title type data folderid

Module table

Id label moduleId folderid

Folder table

Id label

如果文档 table 中的 type = 1,我想从 module table 中获取 folderid 否则它应该从自身获取 id

我尝试了以下查询

SELECT  m.*
  FROM modules m
  LEFT JOIN documents ed ON CAST(m.moduleId AS VARCHAR) = ed.data
  where m.folderId = 35 OR ed.folderid =35

但是我不能写 if 条件,谁能告诉我我该怎么做?

提前致谢

  SELECT  m.*
  FROM modules m
  LEFT JOIN documents ed ON CAST(m.moduleId AS VARCHAR) = ed.data
  where (type = 1 and m.folderId = 35)
     OR (type <> 1 and ed.folderid = 35)

另一种选择是 case 表达式。

SELECT  m.*
FROM modules m
LEFT JOIN documents ed ON CAST(m.moduleId AS VARCHAR) = ed.data
where case when type = 1 
    then m.folderId 
    else ed.folderid 
    end = 35