-3

我想在查询的 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

谢谢,

拉胡尔

4

4 回答 4

1

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

select dbo.MyAgg(ID)AS Ids
from @Table1 T                              
where T.ID  <=5
于 2013-09-05T07:37:21.287 回答
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

看到这个 SQLFiddle

于 2013-09-05T07:51:33.453 回答
0

从查询中删除条件

 where T.NAME <> 'E'

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

于 2013-09-05T07:40:00.980 回答
0

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

SELECT dbo.MyAgg(ID) AS Ids
FROM @Table1 T                              
WHERE (T.NAME <> 'E' OR T.ID = 5)       
AND T.ID  <= 5
于 2015-10-01T08:36:57.357 回答