我有行的表:简单的重构SQL查询
ID CountryCode Status
----------- ----------- -----------
2 PL 1
3 PL 2
4 EN 1
5 EN 1
,并通过查询
SELECT *
FROM [TestTable]
WHERE Status = 1 AND CountryCode NOT IN (SELECT CountryCode
FROM [TestTable]
WHERE Status != 1)
我得到它有没有状态值都countrycodes = 2
ID CountryCode Status
----------- ----------- -----------
4 EN 1
5 EN 1
我觉得这个查询可以更简单,更清晰。
我怎样才能改变呢?
问候
编辑
PL不能在结果,因为有状态的记录2
编辑
脚本来创建和填充表:
USE [DatabaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TestTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[CountryCode] [nvarchar](2) NOT NULL,
[Status] [int] NOT NULL
) ON [PRIMARY]
INSERT INTO dbo.TestTable
(CountryCode, Status)
VALUES ('PL', -- CountryCode - nvarchar(2)
1 -- Status - int
)
INSERT INTO dbo.TestTable
(CountryCode, Status)
VALUES ('PL', -- CountryCode - nvarchar(2)
2 -- Status - int
)
INSERT INTO dbo.TestTable
(CountryCode, Status)
VALUES ('EN', -- CountryCode - nvarchar(2)
1 -- Status - int
)
INSERT INTO dbo.TestTable
(CountryCode, Status)
VALUES ('EN', -- CountryCode - nvarchar(2)
1 -- Status - int
)
为1和2的唯一状态......或者还有没有其他太多最小/最大应用程序,否则可能会失败...... – DRapp 2011-06-08 18:29:52
@DRapp 5是一个范围 – user278618 2011-06-08 18:32:51