如何去除**IN**查询Sql中的冗余条件

我有这种查询。但是我需要优化此查询,以便如何使用相同的拆分功能省略冗余条件。

DECLARE @Filter nvarchar(20)
SELECT @Filter ='5,22,3'

SELECT * FROM    Employee e
             WHERE e.code IN 
             (
             CASE WHEN((SELECT count(*) FROM dbo.FNSPLITSTRING(SUBSTRING(@Filter,1,LEN(@Filter)-1), ',') d 
                                  WHERE d.splitdata IN (5, 16, 20, 23, 33, 49, 62, 90, 91, 92, 93, 94))>0) THEN 5 ELSE 0 END 
             ,CASE WHEN((SELECT count(*) FROM dbo.FNSPLITSTRING(SUBSTRING(@Filter,1,LEN(@Filter)-1), ',') d 
                                  WHERE d.splitdata IN (22, 18))>0) THEN 46 ELSE 0 END
             ,CASE WHEN((SELECT count(*) FROM dbo.FNSPLITSTRING(SUBSTRING(@Filter,1,LEN(@Filter)-1), ',') d 
                                  WHERE d.splitdata IN (3, 28))>0) THEN 3 ELSE 0 END
             )

我已经做了新的方式。不那么复杂并省略冗余代码。

DECLARE @Filter nvarchar(20)
SELECT @Filter ='5,22,3'

SELECT Distinct e.EmployeeId FROM Employee e
CROSS JOIN dbo.fnSplitString(@Filter, ',') AS d
WHERE 
(e.code = 5 AND d.splitdata IN ('5', '16', '20', '23', '33', '49', '62', '90', '91', '92', '93', '94'))
OR (e.code = 46 AND d.splitdata IN ('22', '18'))
OR (e.code = 3 AND d.splitdata IN ('3', '28'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何重写我的SQL查询以从GROUP BY列中删除冗余值?

来自分类Dev

如何重写我的SQL查询以从GROUP BY列中删除冗余值?

来自分类Dev

SQL 查询中的条件

来自分类Dev

如何减少单个查询中的冗余MySQL函数调用?

来自分类Dev

SQL查询删除循环冗余

来自分类Dev

如何在SQL中根据条件显示查询?

来自分类Dev

如何在SQL中查询一列的多个条件?

来自分类Dev

如何在SQL中根据条件显示查询?

来自分类Dev

如何在SQL查询中添加不同的条件语句

来自分类Dev

如何在SQL查询中添加多个AND条件?

来自分类Dev

如何在 SQL Server 的条件中执行 JOIN 查询?

来自分类Dev

如何编写条件SQL查询?

来自分类Dev

如何创建条件SQL查询

来自分类Dev

sql查询中的条件所在

来自分类Dev

在SQL查询中添加条件

来自分类Dev

Hibernate中的条件SQL查询

来自分类Dev

在SQL查询中应用if条件

来自分类Dev

在SQL查询中编写条件

来自分类Dev

PHP代码中是否存在冗余条件?

来自分类Dev

在条件中替换SQL查询中的值

来自分类Dev

从 Java 中的 SQL 查询中获取条件

来自分类Dev

如何去除 BootstrapDialog 中的灰色

来自分类Dev

如何从SQL查询中执行SQL查询

来自分类Dev

如何在SQL查询中放置条件

来自分类Dev

如何编写条件可选的sql查询?

来自分类Dev

如何通过sql查询将条件排序

来自分类Dev

SQL Server更新查询中的if条件

来自分类Dev

在SQL随机查询中添加where条件

来自分类Dev

SQL-查询中的条件ISNULL语句