Ayo*_*rus 3 sql sql-server sql-server-2008
我有一个非常简单的查询,返回一组行,从下表:
Table1
N1 N2
1 A1
1 A2
2 B1
2 B2
2 B3
Run Code Online (Sandbox Code Playgroud)
我只需要从表中一行(TOP(1))N1 = @X.在所有情况下,我宁愿得到一个特定的N2值,但并非所有情况下N2都会存在一个值N1
例如,以下查询不会返回任何行:
SELECT TOP(1) N1, N2 FROM Table WHERE N1 = 2 AND N2 = 'B4'
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种简单的方法来返回至少1行,即使条件N2 = @N2没有满足.返回哪一行无关紧要,如果该@N2值不存在则任何行都可以.
到目前为止,我已经完成了以下操作,但我想如果有人知道更简单的事情:
;with tmp AS (
SELECT TOP(1) *, 1 AS No FROM Table1 WHERE N1 = @N1 AND N2 = @N2
UNION
SELECT TOP(1) *, 2 AS No FROM Table1 WHERE N1 = @N1
)
SELECT TOP(1) * FROM tmp ORDER BY No
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
我想你想要order by:
SELECT TOP(1) N1, N2
FROM Table
WHERE N1 = 2
ORDER BY (CASE WHEN N2 = 'B4' THEN 1 ELSE 2 END);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |