3

我有一种情况,如果我找不到某些查询的数据,我需要获取一些数据。例如

select id from abc where userid='XYZ'

在这种情况下,我将获得 ID,仅当表 abc 中存在 userid='XYZ' 的记录时。

仅当 id 为 null 时,下面给出的代码才会给出 123 。这不是我所期望的。

select isnull(id,123) from abc where userid='XYZ'

我想要类似的东西:
如果 abc 中没有 userid='XYZ' 的数据,那么应该输出一些特定的值。
例如

select isnull((select id from abc where userid='XYZ'),123)

上述查询是否有类似的快捷方式?请建议。提前致谢

4

3 回答 3

1

isnull 在“列”级别工作,您需要的是如果一行为空,则打印其他内容。

我会用一个“虚拟”选择来联合你的所有选择,其中只包含一行你想要显示的数据,以防万一没有返回,然后用一个订单从中选择前 1 个。喜欢

select top 1 id
from (
    select id, 1 from abc where userid='XYZ'
    UNION ALL
    select 123, 0
) X
order by 1 DESC
于 2013-09-18T13:04:24.280 回答
0
select top 1 id
from
(
      select 1 as id, value from abc where userid='xyz'
      union 
      select 2, 123 
) v
order by ranking
于 2013-09-18T12:16:02.497 回答
0

如果结果只返回一行,则可以使用变量。

DECLARE @Id INT;

SELECT @Id = id FROM abc WHERE userid='XYZ';

SET @Id = ISNULL(@Id, 123);

SELECT @Id AS Id;
于 2013-09-18T12:22:32.690 回答