【发布时间】:2022-12-03 00:32:12
【问题描述】:
我试图用来自外部的 ID 填充两个临时表作为单个字符串,我将其拆分并保存到第三个临时表:
CREATE TABLE #TempProdotti (Id int NULL);
CREATE TABLE #TempProdottiAggregati (Id int NULL);
CREATE TABLE #TempCorsiSingoli (Id int NULL);
-- split ids and cast them as INT
INSERT INTO #TempProdotti (Id)
(SELECT CAST(value AS int) AS Id
FROM string_split('3116,3122,3090', ','));
-- then search into products table if the ids match any aggregated (or not) product.
-- then save aggegated products id in one table and the not aggregated ones into another
INSERT INTO #TempCorsiSingoli (Id)
(SELECT Id
FROM mod_SHOP_Prodotti
WHERE Id IN (SELECT Id FROM #TempProdotti)
AND ProdottoAggregato = 0);
INSERT INTO #TempProdottiAggregati (Id)
(SELECT Id
FROM mod_SHOP_Prodotti
WHERE Id IN (SELECT Id FROM #TempProdotti)
AND ProdottoAggregato = 1);
SELECT *
FROM #TempProdotti;
SELECT *
FROM #TempProdottiAggregati;
SELECT *
FROM #TempCorsiSingoli;
DROP TABLE #TempProdotti;
DROP TABLE #TempProdottiAggregati;
DROP TABLE #TempCorsiSingoli;
当我运行查询时,如果在两个临时表之一中没有找到任何内容,它只会返回一个空表:
如果不满足条件,是否有一种干净的方法可以在 Id 上返回 NULL?
【问题讨论】:
-
仅供参考,没有必要像那样将
SELECT语句括在括号中,这实际上使它们读起来有点混乱,因为它使它们看起来像子查询。 -
那么,如果查询没有返回任何行,您是否期望将
INSERT值NULL放入表中?或者如果临时表中没有行,您是否希望在后面的SELECTs 中返回值NULL? -
@Larnu 正好是第二个。我需要将插入“主”中的 ID 拆分为两个临时 ID,如果两个查询之一没有结果,则可能返回 null
标签: tsql split temp-tables