gpt4 book ai didi

空 OR 匹配的 SQL 查询 Where 子句(仅返回 1)?

转载 作者:行者123 更新时间:2023-12-04 07:04:09 25 4
gpt4 key购买 nike

我有一个表,其记录的结构类似于此..

角色ID
1 空
2 15
3 16

我写了一个 where 子句来获取如下记录

SELECT * from TableX 
WHERE (RoleID = 2 OR RoleID IS NULL)

这让我得到了“1,NULL”的记录

但如果我查询
SELECT * from TableX 
WHERE (RoleID = 15 OR RoleID IS NULL)

我得到“1,NULL”和“2,15”。

有谁知道如何构造一个选择来只给我一个记录?如果传递了 15,我只想要“2,15”,如果没有匹配,我只想要“1,NULL”。

请注意,实际查询中包含更多的 where 子句,因此将自身嵌套在自身内部将是一个非常大的查询。

最佳答案

SELECT TOP 1 和 ORDER BY RoleID DESC 怎么样

这是一个工作示例。

declare @mytable table
(
ID int null,
RoleID int null
)
insert @mytable values
(1, null),
(2, 15),
(3, 1)

select TOP 1 *
from @mytable
WHERE (RoleID = 2 OR RoleID IS NULL)
order by RoleID desc


select top 1 * from @mytable
WHERE (RoleID = 15 OR RoleID IS NULL)
order by RoleID desc

编辑 (根据收到的评论编辑)
请注意,Insert 语句仅适用于 SQL Server 2008。对于 2008 之前的版本,您必须将其拆分为单独的插入。

关于空 OR 匹配的 SQL 查询 Where 子句(仅返回 1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com