Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Select语句结果问题_Java_Sql_Select - Fatal编程技术网

Java 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

给定以下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')) 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)