SQL Server:如何设置条件在哪里

时间:2016-07-11 12:57:00

标签: sql-server conditional-statements where-clause sqlanywhere

我需要一些SQL Server查询的帮助。我有三个表文档,模块和文件夹。

Document

Id Title type data folderid

Module

Id label moduleId folderid

Folder

Id label

如果文档表中的type = 1,我想从folderid表中获取module,否则它应该从自身获取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

但是如果条件在哪里可以告诉我怎么办?

我无法写

提前致谢

2 个答案:

答案 0 :(得分:1)

  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)

答案 1 :(得分:1)

另一种选择是案例表达。

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