好的,这是我的SQL: -
SELECT Telephone,
Houseno,
Street,
Tostreet,
Passengername,
Acceptancedate
FROM Telephone
WHERE Acceptancedate !> '2014/05/01'
AND Telephone LIKE '011%'
AND ( Zoneno = '6'
OR Zoneno = '5'
OR Zoneno = '9'
OR Zoneno = '108' )
AND Telephone = 'XXX'
ORDER BY Acceptancedate
显示此电话号码的5条记录。
但是,如果我将!>
更改为>
显示3条记录。
我所拥有的SQL是正确的,但我只想显示数字,如果这个电话号码在AcceptanceDate > '2014/05/01'
时没有显示(因为电话号码不是唯一的)
非常感谢任何帮助!
答案 0 :(得分:1)
您可以使用NOT EXISTS
排除在特定日期之后出现的电话号码
SELECT Telephone,
Houseno,
Street,
Tostreet,
Passengername,
Acceptancedate
FROM Telephone AS t
WHERE Telephone LIKE '011%'
AND Zoneno IN ('6', '5', '9', '108')
AND Telephone = 'XXX'
AND NOT EXISTS
( SELECT 1
FROM Telephone AS t2
WHERE t2.Telephone = t.Telephone
AND t2.Acceptancedate > '20140501'
);
答案 1 :(得分:0)
您应该像这样编写where
子句:
WHERE Acceptancedate <= '2014-05-01' AND
Telephone LIKE '011%' AND
Zoneno IN ('6', '5', '9', '108') AND
Telephone = 'XXX'
这不会改变结果,但以下是更改:
!<
不是标准比较运算符。使用更清晰的<=
。ZoneNo
的比较更改为使用IN
而不是OR
另外,我注意到Telephone
上的两个比较。第一个是多余的。