我使用下面的简单查询根据我们从一张纸上的打印输出中获得的modelID输出partID列表。
我们总是一次只使用一个modelId:
SELECT gm.partId, 343432346 as modelId
FROM dbo.systemMemberTable sm
WHERE gm.partID NOT IN (SELECT partID FROM systemsPartTable)
有没有办法创建一次使用10个modelIds的查询?
我无法想办法,因为modelIds不在任何表格中,只是打印输出给我们。
谢谢!
答案 0 :(得分:3)
insert
将模型ID导入表变量,然后使用此表变量执行join
如果部分表中有not exists
个值,则使用not in
代替null
,但不能使用declare @modelIds table
(
model_id int
)
insert into @modelIds values (343432346) , (123456)
。
cross join
你的选择将是
如果您希望为所有部分重复相同的模型ID,则可以使用 select gm.partId, m.model_id
from dbo.systemMeberTable sm
cross join @modelIds m
where not exists ( select 1 from systemPartsTable SPT where SPT.partId = gm.PartID )
{{1}}
答案 1 :(得分:3)
SELECT gm.partId, T.number as modelId
FROM ( values (4),(9),(16),(25)
) as T(number)
CROSS JOIN dbo.systemMemberTable sm
WHERE gm.partID NOT IN (SELECT partID FROM systemsPartTable)
op表示收到错误,但这是为我运行的测试
SELECT T.number as [modelID]
,[main].[name]
FROM ( values (4),(9),(16),(25)
) as T(number)
cross join [Gabe2a_ENRONb].[dbo].[docFieldDef] as [main]
where [main].[ID] not in (1)
答案 2 :(得分:2)
试试这个:
DECLARE @T TABLE (ModelId INT);
INSERT INTO @T (ModelID)
VALUES (343432346), (343432347) -- And so on and so forth
SELECT gm.partId, T.ModelId
FROM dbo.systemMemberTable sm
INNER JOIN @T AS T
ON T.ModelId = SM.ModelID
WHERE gm.partID NOT IN (SELECT partID FROM systemsPartTable)
答案 3 :(得分:2)
Create table #tempmodelTable
(
@modelid int
)
在此处插入所有modelid,然后使用您的选择查询
连接 INSERT INTO #tempmodelTable values(123123)
INSERT INTO #tempmodelTable values(1232323)
INSERT INTO #tempmodelTable values(1232343123)
SELECT gm.partId, modelId
FROM dbo.systemMemberTable gm inner join #tempmodelTable
WHERE gm.partID NOT IN (SELECT partID FROM systemsPartTable)