我希望通过在SQL中的另一列上满足两个条件来返回列值。
ORDER | STATUS
--------------
50 | 10
50 | 20
55 | 10
60 | 10
65 | 10
65 | 20
如果状态= 10且状态为!= 20
,我想返回所有订单结果:
ORDER
-----
55
60
我尝试过以下代码,但不起作用:
Select Order
FROM ordertable OT
where OT.STATUS in ('10') and OT.STATUS not in ('20')
感谢您的帮助。
编辑:谢谢你的回复。让我澄清一下,我的意思是从表中返回整行,其中订单只有status = 10,而不是订单号。为清楚起见,我在示例中省略了其他列。答案 0 :(得分:1)
使用EXCEPT
select order from ordertable where status = 10
except
select order from ordertable where status = 20
即。返回状态为10的订单值,状态为20的订单除外。
答案 1 :(得分:1)
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key> //put your domain name here
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
答案 2 :(得分:1)
我想你的意思是:
select order_ "Order"
from ordertable ot
where ot.status = 10
minus
select order_ "Order"
from ordertable ot
where ot.status = 20;
或者这个:
select order_ "Order"
from ordertable ot
where ( ot.status = 10 ) or ( ot.status != 10 and ot.status = 20 )
group by order_
having count(1)=1;
根据您的上一条评论,您希望&#34;从订单只有状态= 10&#34;的表中返回整行,然后以下内容最适合:
select order_ "Order"
from ordertable ot
group by order_
having avg(ot.status)=10;
SQL Fiddle Demo(包括三个案例)
P.S。我不知道您在运行此SQL的数据库,但order
是一个关键字,不能在其中任何一个中用作列名。
答案 3 :(得分:0)
一种简单的方法是group by
和having
:
select order
from ordertable
where status in ('10', '20')
group by order
having max(status) = '10';