两个sql if语句

两个sql if语句,sql,sql-server,Sql,Sql Server,我想在sql中运行两个IF语句。IF是两种不同的条件,例如: IF (@user == 'Bob') BEGIN SELECT * FROM table Where id = 1 END IF (@animal == 'Cat') BEGIN SELECT * FROM table WHERE id = 50 END 如果只有第一个条件是正确的,则返回第1行;如果两个条件都满足,则返回第1行和第50行。 这在第二个IF语句中失败,是否需要添加另一个关键字?我认为这可能符合您的要求

我想在sql中运行两个IF语句。IF是两种不同的条件,例如:

IF (@user == 'Bob')
BEGIN
   SELECT * FROM table Where id = 1
END
IF (@animal == 'Cat')
BEGIN
   SELECT * FROM table WHERE id = 50
END
如果只有第一个条件是正确的,则返回第1行;如果两个条件都满足,则返回第1行和第50行。
这在第二个IF语句中失败,是否需要添加另一个关键字?

我认为这可能符合您的要求

IF (@user == 'Bob')
BEGIN
   SELECT * FROM table Where id = 1
END
ELSE IF (@animal == 'Cat') and (@user == 'Bob')
BEGIN
   SELECT * FROM table WHERE id = 50
END
  SELECT * FROM table Where id = 1 && @user == 'Bob'

Union

  SELECT * FROM table WHERE id = 50 && @animal == 'Cat' && @user == 'Bob'

我想这可能是你想要的

  SELECT * FROM table Where id = 1 && @user == 'Bob'

Union

  SELECT * FROM table WHERE id = 50 && @animal == 'Cat' && @user == 'Bob'

我建议有一种说法:

SELECT
   *
FROM table
WHERE
    (@user = 'Bob' AND Id = 1)
    OR
    (@animal= 'Cat' AND Id = 50)

我建议有一种说法:

SELECT
   *
FROM table
WHERE
    (@user = 'Bob' AND Id = 1)
    OR
    (@animal= 'Cat' AND Id = 50)

尝试此嵌套if函数:

SELECT * FROM table Where id = IF(@user=='Bob',1,IF(@animal=='Cat',50));

尝试此嵌套if函数:

SELECT * FROM table Where id = IF(@user=='Bob',1,IF(@animal=='Cat',50));


ID必须是结果,而不是选择值。@Martin。你能详细说明一下吗?根据我对问题的理解,这简化了逻辑,并实现了OP想要的。@Gordon,OP希望ID为50,如果user='Bob',Animal='Cat',如果user='Bob',ID为1。这个查询不会这样做。根据他的问题,我建议使用ELSE IF,而不是两个IF。@Martin,检查OP查询,他正在做一个SELECT*FROM表,其中id=1。如果我的问题不清楚,我很抱歉,但这正是我想要的,非常感谢,这必须是一个结果,而不是一个选择值。@Martin。你能详细说明一下吗?根据我对问题的理解,这简化了逻辑,并实现了OP想要的。@Gordon,OP希望ID为50,如果user='Bob',Animal='Cat',如果user='Bob',ID为1。这个查询不会这样做。根据他的问题,我建议使用ELSE IF,而不是两个IF。@Martin,检查OP查询,他正在做一个SELECT*FROM表,其中id=1如果我的问题不清楚,请担心,但这正是我想要的,非常感谢失败意味着什么?您需要在一个结果集中使用它们吗?请注意,批处理/命令/存储过程可以返回多个结果集。每个select语句将对应一个结果集。按照编写SQL的方式,最多会有两个单独的结果集,两个结果集都包含零条或一条记录。这就是您想要的结果,还是希望结果以其他形式出现?失败是什么意思?是否需要将它们放在一个结果集中?请注意,批处理/命令/存储过程可以返回多个结果集。每个select语句将对应一个结果集。按照编写SQL的方式,最多会有两个单独的结果集,两个结果集都包含零条或一条记录。这就是你想要的,还是你想要其他形式的结果?sql server使用不同的语法,只是注意到了这一点,但是嘿,这就是internet的用途。sql server使用不同的语法,只是注意到了这一点,但是嘿,这就是internet的用途。