我想删除除2之外包含任何其他值的所有帐户,然后执行计数。应用where Number = 2
将包括吉姆。我不想要吉姆,我只想要约翰。例;这应该通过。
+---------+-------+-------+--------+
| Account | First | Last | Number |
+---------+-------+-------+--------+
| 17342 | John | Locke | 2 |
| 17342 | John | Locke | 2 |
| 17342 | John | Locke | 2 |
+---------+-------+-------+--------+
这不应该。
+---------+-------+------+--------+
| Account | First | Last | Number |
+---------+-------+------+--------+
| 20342 | Jim | Look | 3 |
| 20342 | Jim | Look | 2 |
| 20342 | Jim | Look | 1 |
+---------+-------+------+--------+
在此之后,我想在单独的查询中找到所有没有值为2的帐户。
答案 0 :(得分:1)
有几种方法可以做到这一点。一种方法(如果你没有太多的数据)将是这样的:
SELECT
*
FROM Accounts
WHERE Account NOT IN (
SELECT
Account
FROM Accounts
WHERE Number <> 2
)
这会选择帐户中只包含2的所有帐户。
答案 1 :(得分:1)
使用NOT EXISTS
:
SELECT Account, First, Last, Number
FROM dbo.Tablename t
WHERE t.Number = 2
AND NOT EXISTS
(
SELECT 1 FROM dbo.Tablename t2
WHERE t.Account=t2.Account AND t.First=t2.First AND t.Last=t2.Last
AND t2.Number <> 2
)
这将仅选择没有其他记录具有相同帐户但数字&lt;&gt;的记录。 2.如果列Account
是标识符且First
+ Last
属于该表,则可以缩短它。