Java Select语句结果问题
给定以下Select语句Java Select语句结果问题,java,sql,select,Java,Sql,Select,给定以下Select语句 String cmpquery = "SELECT cwfour.ord_number, cwfour.ord_status, orderheader.ord_status FROM live.dbo.cwfour cwfour, live.dbo.orderheader orderheader WHERE ((cwfour.ord_number = orderheader.ord_hdrnumber AND NOT cwfour.ord_status='CAN
String cmpquery = "SELECT cwfour.ord_number, cwfour.ord_status,
orderheader.ord_status
FROM live.dbo.cwfour cwfour, live.dbo.orderheader orderheader
WHERE ((cwfour.ord_number = orderheader.ord_hdrnumber AND NOT
cwfour.ord_status='CAN')) or ((cwfour.ord_number = orderheader.ord_hdrnumber
AND NOT cwfour.ord_status='CMP'))"
结果集显示文件中的所有订单,但我只要求那些不是CAN或CMP、取消或完成的订单。我在where子句中遗漏了什么 您正在查询状态不是“CAN”或“CMP”的行,这将返回所有行,因为“CAN”ins不是“CMP”,反之亦然。相反,您应该查询行也不是。例如:
选择cwfour.ord\u编号、cwfour.ord\u状态、orderheader.ord\u状态
来自live.dbo.cwfour-cwfour,live.dbo.orderheader-orderheader
其中cwfour.ord_number=orderheader.ord_hdrnnumber和
cwfour.ord_状态不在('CAN','CMP')
还值得注意的是,隐式联接(在from
子句中列出了多个表)从很长一段时间以来一直被认为是不推荐的。相反,建议使用显式联接:
选择cwfour.ord\u编号、cwfour.ord\u状态、orderheader.ord\u状态
从live.dbo.cwfour到cwfour
在上加入live.dbo.orderheader orderheader
cwfour.ord\U编号=ORDERSHEADER.ord\U HDRNAMBER
其中cwfour.ord_状态不在('CAN'、'CMP')
逻辑
你的情况是:
(cwfour.ord_number = orderheader.ord_hdrnumber AND NOT cwfour.ord_status='CAN')
OR
(cwfour.ord_number = orderheader.ord_hdrnumber AND NOT cwfour.ord_status='CMP')
那是
A & (!B | !C)
简单地说:
A&(几乎任何东西)
;) 谢谢!,我看了这么久,结果被淘汰了。谢谢
A & (!B | !C)