在WHERE子句中使用的查询输出中包含Id

时间:2013-09-05 07:34:59

标签: sql sql-server-2008

我想在我的查询的WHERE子句中包含我正在使用的Id。请在下面找到我的问题: -

DECLARE @Table1 TABLE(ID INT,NAME VARCHAR(10))

INSERT INTO @Table1 VALUES(1,'A')
INSERT INTO @Table1 VALUES(2,'B')
INSERT INTO @Table1 VALUES(3,'C')
INSERT INTO @Table1 VALUES(4,'E')
INSERT INTO @Table1 VALUES(5,'E')
INSERT INTO @Table1 VALUES(6,'F')

SELECT * FROM @Table1

SELECT dbo.MyAgg(ID) AS Ids
FROM @Table1 T                              
WHERE T.NAME <> 'E'       
AND T.ID  <=5

它显示的输出是: -

1,2,3

但期望的输出是: -

1,2,3,5

谢谢,

的Rahul

4 个答案:

答案 0 :(得分:1)

您应该删除T.NAME <> 'E'条件

select dbo.MyAgg(ID)AS Ids
from @Table1 T                              
where T.ID  <=5

答案 1 :(得分:1)

您可以使用UNION这样执行此操作:

SELECT ID AS Ids
  FROM Table1 T                              
 WHERE T.NAME <> 'E'       
   AND T.ID  <=5
UNION
SELECT ID AS Ids
  FROM Table1 T
 WHERE T.ID = 5

请参阅this SQLFiddle

答案 2 :(得分:0)

从查询中删除条件

 where T.NAME <> 'E'

因为它从结果集中删除了第5个id字段记录。这就是为什么你没有得到5个id的结果。

答案 3 :(得分:0)

使用OR而不是联合会不会更容易:

SELECT dbo.MyAgg(ID) AS Ids
FROM @Table1 T                              
WHERE (T.NAME <> 'E' OR T.ID = 5)       
AND T.ID  <= 5