首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL根据状态和计数选择满足一定条件的行

SQL根据状态和计数选择满足一定条件的行
EN

Stack Overflow用户
提问于 2018-05-15 00:11:53
回答 4查看 1.4K关注 0票数 1
代码语言:javascript
运行
复制
ID  Foreign_ID  Number   Status_Id
1   101         xyz11    3
2   101         xyz22    3
3   201         xyz33    3
4   201         xyz44    1
5   201         xyz55    7
6   301         xyz66    1
7   301         xyz77    7
8   301         xyz88    7

Status_Id,3表示活动,1表示已取消,7表示已撤消我要选择只有status_id 1或7且不应该有任何活动行的行。查询应该只返回带有301 (Foreign_ID)的行。

EN

回答 4

Stack Overflow用户

发布于 2018-05-15 00:13:46

您可以尝试以下代码:

代码语言:javascript
运行
复制
Select *
From Yourtablename
Where Status_Id in (1, 7)
AND Foreign_ID = 301;
票数 0
EN

Stack Overflow用户

发布于 2018-05-15 00:13:56

使用not exists

代码语言:javascript
运行
复制
select * 
from table t
where not exists (
    select 1 from table where Foreign_ID = t.Foreign_ID and Status_Id = 3
);

这称为关联subquery,其中subquery依赖于外部查询,如果外部查询表有3行,则subquery将执行3次。

在您的示例中,子查询具有filter with status_id = 3,这意味着它将只选择status_id =3的行,依此类推,外部查询具有NOT EXISTS筛选器,这意味着它将选择status_id <> 3的行。

票数 0
EN

Stack Overflow用户

发布于 2018-05-15 00:14:36

我必须承认,也许我还没有完全理解你的需求,但这应该是可行的:

代码语言:javascript
运行
复制
SELECT * FROM table WHERE (Status_Id=1 OR Status_Id=7) AND Foreign_ID=301
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50334747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档