我必须编写一个语句,用合成生成的值填充表(customers
)。有一个附加约束,我应该只用特殊属性填充那些属性(列)(即正式对它们进行投影,然后专门对它们进行操作)。这些属性存储在第二个表attributes
。
我的初稿包括以下两个陈述:
-- Get the attributes (columns) we are interested in only
SELECT attributeID from attributes
WHERE tableID = 'customers'
-- Iterate over each row of customers, filling only those attributes (columns)
-- obtained by the above SELECT statement
UPDATE customers
SET (use the records from above select statement...)
现在我的问题是如何将它们组合在一起。我知道有可能在SET
子句中附加一个WHERE子句,但这会根据需要选择行而不是列。我还读到了PIVOT
,但到目前为止只在一张表内,而不是两张,就像这里的情况一样。我会非常感谢任何提示,因为我不知道如何做到这一点。
答案 0 :(得分:4)
UPDATE
Table
SET
Table.col1 = other_table.col1,
Table.col2 = other_table.col2
FROM
Table
INNER JOIN
other_table
ON
Table.id = other_table.id
答案 1 :(得分:2)
标准SQL-92需要标量子查询:
UPDATE customers
SET attributeID = (
SELECT A1.attributeID
FROM attributes AS A1
WHERE A1.tableID = 'customers'
);
然而,UPDATE customers...WHERE A1.tableID = 'customers'
“闻起来像是你可能将数据与元数据混合在一起。