如何根据条件合并两个SQL Server表?

时间:2019-09-30 07:53:45

标签: sql sql-server

我想做的事情有点像Join,但是我希望表中的数据实际上与另一个表中的数据合并。

为了更清楚地说明这一点,我将深入解释该问题,就目前的形式而言,我的解释听起来很愚蠢。

第一个表是 dbo.Categories ,其中包含诸如[Id], [Name_Good]之类的列。

第二个表是 dbo.Categories_Title ,其中包含诸如[Id], [Name], [Title_OK]之类的列。

我想做的是合并两个表on Categories.[Name_Good] = Categories_Title.[Name]

因此 dbo.Categories 也将具有另一个表中的[Title_OK]列,以及对应于该条件的正确值。

因此,所得的dbo.Categories表应包含[Id], [Name_Good,[Title_OK]

INSERT Categories (Title_OK)
SELECT Title_Ok
FROM Categories_Title
WHERE Categories.Name_Good=Categories_Title.Name

我尝试使用此代码,但出现以下错误:

  

无效的列名“ Title_OK”

2 个答案:

答案 0 :(得分:1)

您需要先更改function getDaysAgo(date, now = new Date()) { //first calculating start of the day const start = now.setHours(0, 0, 0, 0); //then calculating difference in miliseconds const diff = start - date.getTime(); //finally rounding to a bigger whole days const result = Math.ceil(diff/(1000*60*60*24)); //as a bonus returning today/yesterday/future when necessary if (result < 0) { return 'in future'; } if (result === 0) { return 'today'; } return result === 1 ? 'yesterday' : result + ' days ago'; } 表并添加一个Categories列:

Title_Ok

在此之后,您应该在此处执行 update ,而不是插入内容:

ALTER TABLE Categories ADD Title_Ok VARCHAR(MAX);

答案 1 :(得分:0)

首先是在“类别”表中添加“标题_确定”列

ALTER TABLE Categories ADD Title_Ok VARCHAR(MAX);

第二个是从Categories_Title插入Categories表中的记录

INSERT INTO Categories ( [Id], [Name_Good], [Title_OK])
SELECT  [Id], [Name], [Title_OK] FROM  Categories_Title