sql语句的查询问题

发布于 2022-09-01 21:33:40 字数 212 浏览 6 评论 0

DECLARE @A INT;
SET @A = 0;
SELECT * FROM dbo.Table WHERE (a IN (1,2) AND a= @A) OR a= @A

我希望改成
传入a = 0的时候,查询a in (1,2)
传入a = 1的时候,查询a = 1
传入a = 2的时候,查询a = 2
请问能否实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

记忆で 2022-09-08 21:33:40

其实很简单,提问的时候已经接近写对了……

DECLARE @A INT;
SET @A = 0;
SELECT * FROM dbo.Table WHERE (a IN (1,2) AND @A = 0) OR a = @A
秉烛思 2022-09-08 21:33:40

当然是可以的:

SET @A = 0;
SELECT * FROM dbo.Table WHERE IF(@A!=0, a=@A, a IN (1,2));

不过并不建议将此类判断交给数据库执行,最好是通过PHP、JAVA构造好了之后,直接让数据库给出结果(效率考虑)。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文