我正在触发像
这样的查询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.
谁能告诉我应该改变什么?
答案 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