查询一组ID
Query for a group of IDs
我使用下面的简单查询来输出一个 partID 列表,该列表基于我们从 sheet 纸上的打印输出中获得的模型 ID。
我们总是一次只使用一个 modelId,就像这样:
SELECT gm.partId, 343432346 as modelId
FROM dbo.systemMemberTable sm
WHERE gm.partID NOT IN (SELECT partID FROM systemsPartTable)
有没有办法创建一次使用 10 个 modelId 的查询?
我想不出办法,因为 modelId 不在任何表格中,只是交给我们的打印输出。
谢谢!
insert
模型 ids 到一个 table 变量,然后用这个 table 变量
做 join
也使用 not exists
而不是 not in
,因为如果 table.
部分中有 null
值,则 not in 不起作用
declare @modelIds table
(
model_id int
)
insert into @modelIds values (343432346) , (123456)
你的 select 会是
因为你想为所有零件重复相同的型号 ID,你可以只使用 cross join
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 )
试试这个:
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)
Create table #tempmodelTable
(
@modelid int
)
在此处插入所有模型 ID,然后将 join 与您的 select 查询一起使用
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)
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)
我使用下面的简单查询来输出一个 partID 列表,该列表基于我们从 sheet 纸上的打印输出中获得的模型 ID。
我们总是一次只使用一个 modelId,就像这样:
SELECT gm.partId, 343432346 as modelId
FROM dbo.systemMemberTable sm
WHERE gm.partID NOT IN (SELECT partID FROM systemsPartTable)
有没有办法创建一次使用 10 个 modelId 的查询?
我想不出办法,因为 modelId 不在任何表格中,只是交给我们的打印输出。
谢谢!
insert
模型 ids 到一个 table 变量,然后用这个 table 变量
join
也使用 not exists
而不是 not in
,因为如果 table.
null
值,则 not in 不起作用
declare @modelIds table
(
model_id int
)
insert into @modelIds values (343432346) , (123456)
你的 select 会是
因为你想为所有零件重复相同的型号 ID,你可以只使用 cross join
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 )
试试这个:
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)
Create table #tempmodelTable
(
@modelid int
)
在此处插入所有模型 ID,然后将 join 与您的 select 查询一起使用
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)
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)