我想獲取給定電子郵件的用戶 ID,或者如果電子郵件不存在,我希望它回傳 MAX(id) 1。
所以對于下面的例子,我想要:
- 對于電子郵件“[email protected]”,我希望它回傳 1
- 對于電子郵件“[email protected]”,我希望它回傳 9
我做了一個嘗試,但我無法讓它按我想要的方式作業。
DECLARE @USERS TABLE (id int, name varchar(50), email varchar(50));
INSERT INTO @USERS(id, name, email) VALUES
(1, 'john', '[email protected]'),
(2, 'nick', '[email protected]'),
(3, 'alex', '[email protected]'),
(4, 'liam', '[email protected]'),
(5, 'noah', '[email protected]'),
(6, 'oliver', '[email protected]'),
(7, 'james', '[email protected]'),
(8, 'rob', '[email protected]');
SELECT CASE WHEN (ISNULL(id, 0) = 0) THEN id ELSE (MAX(id) 1)
FROM @USERS
WHERE email = '[email protected]';
uj5u.com熱心網友回復:
a 中的兩個子查詢coalesce應該可以完成這項作業。
DECLARE @TestEmail VARCHAR(50) = '[email protected]';
SELECT
COALESCE((SELECT TOP 1 id FROM @USERS WHERE email = @TestEmail), (SELECT MAX(id) 1 FROM @USERS), 1);
這只會在您不同時呼叫它的簡單場景中起作用,并且您在再次呼叫它之前使用回傳的 ID。否則,您將需要執行一些鎖定以確保它按預期作業。
uj5u.com熱心網友回復:
以下應滿足語法要求:
select coalesce(max(id), (select coalesce(max(id), 0) 1 from @users))
from @users
where email = '[email protected]'
話雖如此,最大 id 可能會在選擇和在另一個查詢中使用它之間發生變化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452413.html
上一篇:從.ipynb檔案匯入SQLServerManagementStudio備份
下一篇:使用EXCEPT獲取第二條記錄
