带有2 where子句的SQL查询

时间:2015-07-10 17:28:48

标签: sql sql-server

我正在触发像

这样的查询
declare @aID varchar(max)='1,2'
declare @TypeId int=23
declare @sql varchar(max)
set @sql = 'SELECT * from Table1
  WHERE 
   AID IN ('+@aID+')
    AND TypeId = @TypeId

  SET NOCOUNT ON;
  begin
  exec(@sql)
  end

在这里,我得到的结果是' aID'是IN(1,2)和TypeId = 23。 的 But I want that result for all rows where aID IN (1,2), even though TypeId !=23. Plus I want results where TypeId =23 and I dont care what 'aID' it is.

谁能告诉我应该改变什么?

2 个答案:

答案 0 :(得分:3)

您的查询不对。你可以改变它

set @sql = 'SELECT * from Table1
  WHERE 
   AID IN ('+@aID+') OR TypeId ='+ @TypeId

答案 1 :(得分:0)

您需要使用OR代替AND。

SELECT * from Table1
WHERE (AID IN ('+@aID+'))
    OR (TypeId = @TypeId)

使用AND,两个条件都必须为真。使用OR时,只需要一个(或两个)条件为真。

这是一个例子。

SELECT UserFirstName, UserLastName
FROM Users
WHERE UserFirstName = 'Bob' AND UserLastName = 'Johnson'

返回

Bob | Johnson

但是,

SELECT UserFirstName, UserLastName
FROM Users
WHERE UserFirstName = 'Bob' OR UserLastName = 'Johnson'

返回

Bob | Johnson
Bob | Marley
Tom | Johnson