Con*_*orU 1 sql sql-server select coalesce
我有一个名为Users一个名为Limit包含整数值的列的表.每个用户都有一个限制,但未注册的用户的默认限制为1.
我想运行一个简单的查询,告诉我该限制的用户,如果他们注册或默认为1,如果他们不是注册用户,但是当我运行一个查询与任一ISNULL或Coalesce如下记载:
SELECT coalesce(Limit,1) AS limit
FROM User
WHERE userID = 'testUser'
Run Code Online (Sandbox Code Playgroud)
如果我查询现有用户,查询将正常工作,但如果我尝试未注册的用户将返回一个空列表[它应该返回值为1的单行].
使用ISNULL而不是合并产生相同的结果.我发现的每个例子ISNULL和合并都是这样的.我错过了什么?
coalesce对返回值进行操作,并评估是否null存在.在你的情况下,一个不存在的只是没有一行,所以,正如你所说,它将无法正常工作.
但是,您可以使用左连接模拟此行为:
SELECT COALESCE(b_limit, a_limit) AS limit
FROM (SELECT 1 AS a_limit) a
LEFT JOIN (SELECT limit AS b_limit
FROM user
WHERE userID = 'testUser') b ON 1 = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |