gpt4 book ai didi

sql-server - sql查询where子句中的if条件

转载 作者:行者123 更新时间:2023-12-03 15:22:52 25 4
gpt4 key购买 nike

下面是我想要特定用户的数据时查询的 where 子句

where Completion_Date>= '11/01/2011' 
and Completion_Date<= '12/11/2012'
and System_user_id = 1234

以下是我想为所有用户提取数据时的 where 子句:
where Completion_Date>= '11/01/2011' 
and Completion_Date<= '12/11/2012'

由于我不想要 2 个单独的查询,有没有办法在 where 子句中添加条件,以便我可以使用单个查询,并根据输入(即 System_user_id)决定是否在查询中添加额外的条件。
当我想要所有用户的数据和特定用户的 system_user_id 将被发送时,我将发送 -1。

最佳答案

您可以尝试以下程序。

更新查询

declare @userid int = -1
if (@userid = -1)
BEGIN

SELECT * FROM mytable
where Completion_Date>= '11/01/2011'
and Completion_Date<= '12/11/2012'
and userid in
(select distinct userID from mytable)
end
ELSE
BEGIN

SELECT * FROM mytable
where Completion_Date>= '11/01/2011'
and Completion_Date<= '12/11/2012'
and userid = @userid

end;

结果:
USERID  NAME    COMPLETION_DATE
123 john 2011-11-01
125 tim 2011-11-02
127 ron 2011-11-08
  • 引用 SQLFIDDLE

  • 查看特定用户:
  • 引用 SQLFIDDLE


  • 另一种方法

    在 OP 的最新评论后更新
  • SQLFIDDLE

  • 询问:
    DECLARE @uid int = -1
    SELECT
    *
    FROM mytable
    WHERE
    ( CASE
    WHEN @uid <> -1 THEN @uid
    ELSE userid
    END
    ) = userid

    and Completion_Date>= '11/01/2011'
    and Completion_Date<= '12/11/2012'
    ;

    结果:当@uid = -1
    USERID  NAME    COMPLETION_DATE
    123 john 2011-11-01
    125 tim 2011-11-02
    127 ron 2011-11-08

    如果您尝试过,请发表评论:)

    关于sql-server - sql查询where子句中的if条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858239/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com