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
我需要一些有关 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