SQL查询提取:具有相同ID的同一行

时间:2018-02-21 11:56:03

标签: sql oracle

我对以下内容感到有点困惑。该表的数据如下:

  sid   eid  description   returncode    responsemessage   State
    1   T-1                200            OK               Sent 
    1   T-1  Helloworld                                    Processed

我不能使用存储过程,应用程序只支持SQL查询。

select * 
from table 
where eid='T-1' 
  and returncode='200' 
  and returnmessage='OK' 
  and state='Sent' 

可能需要在这里添加一些内容吗?

有关如何使用SQL查询实现此目的的任何提示或想法?

更新:Oracle数据库,我想检索" HelloWorld"来自描述列,但只应在State = Sent具有returncode = 200且responsemessage = ok

时检索它

2 个答案:

答案 0 :(得分:1)

我并不完全清楚你想要完成什么,但也许你的意思是这样的:

select T1.* 
from table  T1
INNER JOIN table T2
        ON  T2.SID = T1.sid
where T1.eid='T-1' 
  and T1.returncode='200' 
  and T1.returnmessage='OK' 
  and T1.state='SENT'
  AND T2.description IS NOT NULL

答案 1 :(得分:0)

我认为您可以使用exists执行此操作:

select t.*
from t
where t.description is not null and t.eid = 'T-1' and
      exists (select 1
              from t t2
              where t2.eid = t.eid and t2.returncode = '200' and
                    t2.returnmessage = 'OK' and t2.state = 'SENT' 
             );

您可能也希望在sid上包含相等性,但问题并不明确。