是不是;不是";是否应用于SQL中的其他逻辑运算符?
我在w3resource.com“网站上练习SQL,在理解这个练习的解决方案时遇到了问题 链接: 问题:编写一条SQL语句,以显示那些不是在2012-09-10日期发布的订单以及由ID为5005及以下的销售人员发布的订单,或者那些采购金额为1000.00及以下的订单 样本表:订单是不是;不是";是否应用于SQL中的其他逻辑运算符?,sql,Sql,我在w3resource.com“网站上练习SQL,在理解这个练习的解决方案时遇到了问题 链接: 问题:编写一条SQL语句,以显示那些不是在2012-09-10日期发布的订单以及由ID为5005及以下的销售人员发布的订单,或者那些采购金额为1000.00及以下的订单 样本表:订单 ord_no purch_amt ord_date customer_id salesman_id ---------- ---------- ---------- -----------
ord_no purch_amt ord_date customer_id salesman_id
---------- ---------- ---------- ----------- -----------
70001 150.5 2012-10-05 3005 5002
70009 270.65 2012-09-10 3001 5005
70002 65.26 2012-10-05 3002 5001
70004 110.5 2012-08-17 3009 5003
70007 948.5 2012-09-10 3005 5002
70005 2400.6 2012-07-27 3007 5001
70008 5760 2012-09-10 3002 5001
70010 1983.43 2012-10-10 3004 5006
70003 2480.4 2012-10-10 3009 5003
70012 250.45 2012-06-27 3008 5002
70011 75.29 2012-08-17 3003 5007
70013 3045.6 2012-04-25 3002 5001
我的解决方案:
select * from orders where (ord_date <> '2012-09-10' and salesman_id <= '5005') or purch_amt <= '1000';
SELECT * FROM orders WHERE NOT ((ord_date ='2012-09-10'AND salesman_id > 5005) OR purch_amt > 1000.00);
问题:在他们的解决方案中,“不”陈述适用于“或”可接受吗?哪种解决方案是正确的
谢谢
非
接受一个操作数。在此表达式中:
WHERE NOT ((ord_date ='2012-09-10'AND salesman_id > 5005) OR purch_amt > 1000.00);
操作数是整个带括号的表达式。您的表达式不等效,但上面的表达式等效于以下表达式,因为非(A或B)
等效于(非A和非B)
,非(A和B)
等效于(非A或非B)
:
WHERE NOT(订单日期='2012-09-10'和销售员id>5005)和
非(采购金额>1000.00)
其中不包括(订单日期为“2012-09-10”,销售人员id>5005)和
采购(金额5005)和
谢谢你的回答,但是根据文本,他们的回答正确吗?@GuissousAllaeddine…英语是含糊不清的,因为不清楚not
到底指的是什么。我认为你的解释更接近英语。not
是或的一个子词,因此,不应否定《守则》或《守则》——对梅的阅读。练习问题是模棱两可的,任何一个答案都可以是解释
WHERE NOT (ord_date = '2012-09-10' AND salesman_id > 5005) AND
NOT (purch_amt > 1000.00)
WHERE NOT (ord_date = '2012-09-10' AND salesman_id > 5005) AND
purch_amt <= 1000.00
WHERE (NOT (ord_date = '2012-09-10') OR NOT (salesman_id > 5005)) AND
purch_amt <= 1000.00
WHERE (ord_date <> '2012-09-10' OR salesman_id <= 5005) AND
purch_amt <= 1000.00