sql - 如果用户是管理员,则显示所有选项,如果不是管理员,则在 SQL 查询中仅显示一个选项
问题描述
我有一个从表中返回值的存储过程。我想要的是返回基于选项 0、1、2 的特定值,如果用户不是管理员,然后如果用户是管理员,将显示所有选项,这将在一个查询中发生。这是示例代码。
IF(@isAdmin = 'true')
BEGIN
SELECT TOP 10 *
FROM [dbo].[inventorydetails]
WHERE InventoryType = 'active'
END
ELSE
BEGIN
SELECT TOP 10 *
FROM [dbo].[inventorydetails]
WHERE InventoryType = 'active'
AND OptionType = 0
END
我想把我的代码缩短成这样的......
SELECT TOP 10 *
FROM [dbo].[inventorydetails]
WHERE InventoryType = 'active'
AND OptionType = CASE WHEN @isAdmin != 'true' THEN 0 END
但这不起作用。有任何想法吗?
解决方案
您也可以获得相同的结果,而无需CASE
使用以下简单条件。
SELECT TOP 10 *
FROM [dbo].[inventorydetails]
WHERE InventoryType = 'active' AND( @isAdmin = 'true' OR OptionType = 0 )
推荐阅读
- jquery - Datatable 的界面无法正常工作
- javascript - 有没有办法使用 h.264 编解码器恢复实时 h264 播放(客户端重新加入)?
- excel - 如何在 MS Excel 中将特定数据从一个 Excel 工作表传输到另一个工作表?
- c++ - 单个父类中有多个相同的类实例
- sikuli - Sikuli 如何使用“而不是”和“而不”
- linux - 如何忽略以 | 分隔的文件中的列 在使用导入命令替换 db2 表中的数据时
- flutter - 一旦视图更改,颤动数字时钟小部件就会导致错误
- db2 - 无法删除 db2 表上的索引
- docker-compose - 如何标记和使用 docker-compose 使用的环境变量
- javascript - jQuery / Javascript - 当另一个元素离页更新时,如何防止当前单击的项目失去焦点