sql删除查询使用多个'和'条款

时间:2014-03-25 09:29:30

标签: sql sql-server

DELETE  from Booking_Master
WHERE Req_No=@Req_No
AND LoginUser=@LoginUser
AND (Booking_Date!< convert(date, getdate()) 
AND (Booking_Date=convert(date, getdate()) 
AND Start_Time!<convert(time, getdate()))) 

执行此查询以删除大于当前时间的记录。例如,它将删除2014-03-25 10:00:00等记录。

删除有什么问题?为什么要删除日期大于当前时间的记录?

2 个答案:

答案 0 :(得分:0)

&#34;!&LT;&#34;意味着not less than。换句话说,它大于或等于。您可能只需要大于&#34;&gt;&#34;

所以你的查询应该是

DELETE  from Booking_Master
WHERE Req_No=@Req_No
AND LoginUser=@LoginUser
AND (Booking_Date > convert(date, getdate()) 
AND (Booking_Date=convert(date, getdate()) 
AND Start_Time > convert(time, getdate()))) 

请注意&#34;&gt;&#34;在Booking_DateStart_Time

希望这有帮助

答案 1 :(得分:0)

我猜你想要的是这个:

DELETE from Booking_Master 
WHERE Req_No=@Req_No 
AND LoginUser=@LoginUser 
AND 
(
 (Booking_Date > GETDATE()) 
 OR
 ( 
   Booking_Date = CONVERT(date, GETDATE()) 
   AND 
   Start_Time > CONVERT(time, GETDATE())
 )
)

它将删除Booking_Date大于getdate(),的记录,Booking_Date与getdate()相同,Start_Time大于getdate()。注意使用括号来确保正确评估逻辑,因为AND运算符的优先级高于OR运算符。