如何使用表中的行创建临时表,但仅使用不匹配的行

时间:2019-06-04 20:36:43

标签: sql sql-server temp-tables

我有一个名为“ Position”的表,该表有六行,id分别为1,2,3,4,5 y 6。 我使用脚本创建了一个临时表,该表有两行,其中的行来自“位置”,分别只有id为5 y 6。

我需要做的是创建一个新的临时表,但只有它具有ID为1,2,3 y 4的'Position'中的行。

有人知道怎么做吗?

我尝试过:

SELECT p.[Id] as idPosicion
      ,[CantidadMaximaApilados]
      ,[IdZona]
into #PosicionesRemover
  FROM [Posicion] p -- this is the table with id's 1,2,3,4,5 y 6
  inner join View_ContenedoresEnStock v ON p.Id = v.posicionId

select * from #PosicionesRemover -- this is the temporary table that only has id's 5 y 6

SELECT P.Id, P.CantidadMaximaApilados, P.IdZona INTO #PosicionesNoOcupadas FROM Posicion P
left join #PosicionesRemover R ON R.idPosicion = P.Id -- here is when i try to only left rows with id's 1,2,3 y 4

2 个答案:

答案 0 :(得分:2)

如果您确实需要创建临时表:

SELECT p.[Id] as idPosicion
      ,[CantidadMaximaApilados]
      ,[IdZona]
INTO #PosicionesRemover
FROM [Posicion] p -- this is the table with id's 1,2,3,4,5 y 6
INNER JOIN View_ContenedoresEnStock v ON p.Id = v.posicionId

SELECT * FROM #PosicionesRemover

SELECT P.Id, P.CantidadMaximaApilados, P.IdZona 
INTO #PosicionesNoOcupadas 
FROM [Posicion] P
LEFT JOIN #PosicionesRemover R ON R.idPosicion = P.Id
WHERE R.idPosicion IS NULL

否则,您可以这样做:

SELECT P.Id, P.CantidadMaximaApilados, P.IdZona 
INTO #PosicionesNoOcupadas 
FROM Posicion P
LEFT JOIN View_ContenedoresEnStock v ON P.Id = v.posicionId
WHERE v.posicionId IS NULL

答案 1 :(得分:0)

最好在一个语句中完成

    SELECT p.[Id] as idPosicion
        ,[CantidadMaximaApilados]
        ,[IdZona]
    into #PosicionesRemoverNEW
    FROM [Posicion] p -- this is the table with id's 1,2,3,4,5 y 6
      inner join View_ContenedoresEnStock v ON p.Id = v.posicionId
    WHERE p.[Id]<5