SQL - 将文本INSERT到字段WHERE ___

时间:2018-06-01 15:27:01

标签: sql sql-server

每当我通过群发电子邮件联系时,我都希望为每个帐户添加备注。到目前为止,我正在看这样的事情:

INSERT INTO Customer_notes (Note_text)
VALUES ('emailed June 1st')
WHERE Customer_Level = 'Alpha'

这显然不起作用,UPDATE / SET将取代我以前的所有笔记。

2 个答案:

答案 0 :(得分:1)

嗯,你可以这样做:

INSERT INTO Customer_notes (Note_text)
    Note_Text = COALESCE(Note_text + '
', '') + 'emailed June 1st')
    WHERE Customer_Level = 'Alpha';

但是,每个客户似乎需要多个便条。所以也许:

INSERT INTO Customer_notes (Customer_Level, Note_text)
    VALUES ('Alpha', Note_Text);

这假设Customer_Level是某种客户ID。

答案 1 :(得分:1)

如果您的意思是将该文本添加到现有行的Note_text中当前存在的任何内容,请尝试此操作..

UPDATE Customer_notes
SET Note_text = ISNULL(Note_text, '') + ' emailed June 1st'
WHERE Customer_Level = 'Alpha'

{基于此答案中的第五条评论编辑}

好的,然后我们选择了同一张桌子而不是VALUES。试试这个(Holy Gawd先备份)如果想要在这个表中创建另一行WHERE Customer_Level ='Alpha'。

INSERT INTO Customer_Notes (CustomerID, note_text) 
SELECT CustomerID, 'emailed June 1st'
FROM CustomerNotes
WHERE Customer_Level = 'Alpha'

如果Customer_Level是所有客户的子集,并且这里的想法是仅为这些客户中的每一个插入一行,而不是每个自定义/现有行的一行,则确实存在问题。如果是这种情况,你将不得不为我们进一步描述。