首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询:与条件的比较

SQL查询:与条件的比较
EN

Stack Overflow用户
提问于 2014-03-15 22:19:26
回答 3查看 42关注 0票数 0

我有一张桌子,看上去如下(简化):

名称@ status

app-1 \x{e76f}

app-1 \x{e76f}运行

app-1 \x{e76f}运行

app-1 \x{e76f}运行

app-1 / finish

AP-2\x{e76f}

AP-2+运行

AP-2+运行

现在,我想过滤所有的应用程序,有“开始”的状态和没有“完成”。对于上面的例子,结果应该是"app-2“。

我不知道如何进行比较,而另外使用condition...it确实给了我一些困难。我希望有人能帮我?!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-15 22:49:36

代码语言:javascript
运行
复制
select name from _table t1
  where t1.status = 'start'
    and not exists (
      select name from _table t2
         where t1.name = t2.name
          and t2.status = 'finish'
     )
票数 0
EN

Stack Overflow用户

发布于 2014-03-15 22:26:14

试着做这样的事情:

代码语言:javascript
运行
复制
SELECT * FROM table_name
WHERE status = 'run' and name NOT IN
  (SELECT name FROM table_name WHERE status = 'finish')
票数 0
EN

Stack Overflow用户

发布于 2014-03-15 22:29:48

不确定您正在使用的是哪个关系数据库,但查询将类似:

代码语言:javascript
运行
复制
Select AppStatus.Name
From (
      Select Name, Started, Finished
      Sum(Case When status = 'start' then 1 else 0 end) as Started,
      Sum(Case When status = 'finish' then 1 else 0 end) as Finished,
      From Table
      Group By Name
) as AppStatus
Where AppStatus.Started > 0 and AppStatus.Finished > 0

更新:如果您假设所有行都将以开始开始,并有零或多个运行,然后完成,这也将工作,而且要简单得多!

代码语言:javascript
运行
复制
Select Distinct(Name) 
From Table Where Name Not In (
    SELECT Name
    FROM Table
    WHERE Status = 'finish')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22430471

复制
相关文章

相似问题

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