【问题标题】:difference between if and if existsif 和 if 存在的区别
【发布时间】:2012-10-15 17:22:06
【问题描述】:

我有这个存储过程,我想知道“如果存在”是否会实际比较 select 语句返回的值,或者它只会检查该条件是否可以执行,抱歉这么愚蠢的问题,但我是新手到 SQL,

declare @m_ID_v int
set @m_ID_v = ( select ID_C from M_T where MName_C = @MName_parameter)

declare @g bit
if exists (select G_L_Column from G_L_table Where M_ID_Column = @M_ID_variable)
    set @g_v = 1
else
    set @g_variable = 0

我的选择语句

select G_L_Column from G_L_table Where M_ID_Column = @M_ID_variable

返回真或假,所以只想确定“如果存在”是否会像“如果”一样工作

【问题讨论】:

  • if exists 中的块将执行如果您在其中的选择查询返回至少 1 条记录,等于 if((select query).records.count > 0)
  • 我该如何使用 if 语句,因为它给了我错误,我问了一个问题,他们让我使用“存在”stackoverflow.com/questions/12892194/…
  • @Ignacio - 看到你删除了另一个问题。只是为了它的价值,我没有否决你的问题。
  • @user569711 我得到了没有解释的反对票,所以我不得不删除它,但感谢你让我知道 :)

标签: sql sql-server-2008


【解决方案1】:

使用if exists 不能用作if。它不检查返回的值是真还是假,它检查是否存在值。

如果您的查询始终返回一个值,if exists 将始终评估为 true。

【讨论】:

  • @Ignacio:如果选择返回一点,你不能简单地将它分配给变量吗?
  • 我实际上可以,但目前我只是根据一个解决问题的值来检查它,ta
【解决方案2】:

EXISTS (Transact-SQL)

指定一个子查询来测试是否存在行。

如果子查询包含任何行,则返回 TRUE。

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多