我这里有100种商品味道的清单。然后我有一张桌子,我需要记录每种口味的每个项目。所以,如果我有50个项目,我需要为此表格中的50个项目中的每个项目提供100条记录。所以最后这张表中总共会有100x50条记录。
我现在拥有的是随机混合的数据,我知道我没有为每个项目记录每种类型的风味。
我需要帮助的是,一个想法/算法可以解决这个问题。伪代码会做。我有一个包含所有可能风格的表(tbl_flavor)和一个包含所有50个项目的表(tbl_items)。这两个将决定需要在table_A中放置什么,这基本上是一个库存。
请指教。
答案 0 :(得分:1)
有几种方法可以解决这类问题。以下是其中一种方法的伪代码。
Update table
set Col1 = SomeValue
where MyKeys = Mykeys
if (@@ROWCOUNT = 0)
begin
Insert table
(Cols)
Values
(Vals)
end
或者您可以使用MERGE。 https://msdn.microsoft.com/en-us/library/bb510625.aspx
答案 1 :(得分:1)
如果我正确理解您的问题,SQL Server EXCEPT
查询将有所帮助。
正如评论中已经指出的,这里是如何获得项目和口味的矩阵:
SELECT Items.Item, Flavors.Flavor
FROM Items
CROSS JOIN Flavors
以下是如何获取项目和风格的矩阵,省略了其他表格中已有的组合。
SELECT Items.Item, Flavors.Flavor
FROM Items
CROSS JOIN Flavors
EXCEPT SELECT Item, Flavor
FROM Table_A
所以INSERT成为:
INSERT INTO Table_A (Item, Flavor)
SELECT Items.Item, Flavors.Flavor
FROM Items
CROSS JOIN Flavors
EXCEPT SELECT Item, Flavor
FROM Table_A
此查询未经测试,因为我不能100%确定该问题。如果你发布更多细节,我会测试它。
答案 2 :(得分:0)
试试这个
UPDATE MyTable
SET
ColumnToUpdate = NewValue
WHERE EXISTS
(
SELECT
1
FROM TableWithNewValue
WHERE ColumnFromTable1 = MyTable.ColumnName
)
INSERT INTO MyTable
(
Column1,
Column2,
...
ColumnN
)
SELECT
Value1,
Value2,
...
ValueN
FROM TableWithNewValue
WHERE NOT EXISTS
(
SELECT
1
FROM MyTable
WHERE ColumnName = TableWithNewValue.ColumnFromTable1
)