带有子查询的 SQL GROUP BY

斯特罗姆

订单历史 ID、IdOrder、状态

和一个表 Order OrderId , ConfirmationDate , LastState

订单历史示例

1, 1000, 50
2, 1000, 60
3, 1000, 90
4, 1001, 50
5, 1001, 90 

命令

1000, '2018-03-01', 90
1001, '2018-03-01', 90

我会接受所有在状态 60 中从未通过的订单。我尝试了很多查询,但我仍然得到状态 60 的订单。

SELECT oh.idOrdine  
FROM OrderHistory  oh 
where oh.state not in (60) 
and oh.OrderId in (Select OrderID 
                   From Orders 
                   where ConfirmationDate >= '2017-03-01' 
                     and state= 90) 
group by oh.OrderId 
order by oh.OrderId desc


SELECT * 
FROM Orders o 
  join OrderHistory oh on oh.OrderId = o.ORderId 
where o.ConfirmationDate>= '2017-03-01' 
  and o.state= 90 
  and oh.OrderId in (SELECT OrderId 
                     from OrderHistory 
                     WHERE State not in (60) 
                       and State in (95) 
                     group by ORderID) 

怎么了?

卡尔达萨

相反not in,您应该使用Not Exists. 通过使用 Not in,您只需消除该行,而不是该 OrderID 的所有行。

SELECT * 
FROM Orders o 
  join OrderHistory oh on oh.OrderId = o.ORderId 
  where o.ConfirmationDate>= '2017-03-01' 
  and o.state= 90 
  and oh.OrderId in (SELECT oh1.OrderId 
                     from OrderHistory oh1
                     WHERE Not Exists (select *
                                       From OrderHistory oh2
                                       where oh2.OrderId=oh1.OrderId and 
                                       oh2.State=60)
                      ) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有子查询的SQL查询优化

来自分类Dev

SQL Group by子查询被忽略

来自分类Dev

在SQL查询中使用带有Union子句的group / order by

来自分类Dev

SQL Server-子查询中有GROUP BY的COUNT个

来自分类Dev

带有子查询的Oracle SQL

来自分类Dev

带有联接的sql子查询语句

来自分类Dev

SQL选择带有计数的子查询

来自分类Dev

带有左联接子查询的sql

来自分类Dev

带有LINQ查询子查询的not in子句的SQL查询

来自分类Dev

带有子查询和GROUP BY的MySQL SELECT的性能

来自分类Dev

带有 Group BY 的 XML 路径子查询导致聚合错误

来自分类Dev

带有子查询和“ HAVING”的SQL查询极慢

来自分类Dev

带有 Order By 的子查询的慢速 SQL 查询

来自分类Dev

sql group_concat和子查询

来自分类Dev

子查询T-SQL中的GROUP BY

来自分类Dev

子查询中的SQL Group By语句

来自分类Dev

在SQL中的子查询中使用group by

来自分类Dev

子查询T-SQL中的GROUP BY

来自分类Dev

在SQL中的子查询中使用group by

来自分类Dev

SQL查询总和IF GROUP BY

来自分类Dev

带有SUM CASE语句的SQL GROUP BY

来自分类Dev

带有空值的 SQL GROUP BY

来自分类Dev

如何使带有子查询的sql选择更快

来自分类Dev

来自带有子级别的SQL查询的JSON

来自分类Dev

SQL-带有子查询的SELECT语句

来自分类Dev

带有子字符串charindex的sql查询

来自分类Dev

带有 SELECT AS 子查询的 Oracle SQL UNION

来自分类Dev

SQL子查询和group by产生具有相同值的行

来自分类Dev

订购包含带有group_concat的子查询的查询非常慢