Sql 从表中添加行,这些行位于';你不在另一张桌子上
我有以下表格:Sql 从表中添加行,这些行位于';你不在另一张桌子上,sql,tsql,Sql,Tsql,我有以下表格: Contacts contact_id, contact_name, etc. assigned_lists contact_id, list_id 每个联系人可以与多个列表关联,这些列表存储在assigned_list列中 我有很多与任何列表都没有关联的联系人。如何将所有与列表无关的联系人id插入到分配的列表中?尝试: INSERT INTO assigned_lists (contact_id, list_id) SELECT contact_id,
Contacts
contact_id, contact_name, etc.
assigned_lists
contact_id, list_id
每个联系人可以与多个列表关联,这些列表存储在assigned_list
列中
我有很多与任何列表都没有关联的联系人。如何将所有与列表无关的联系人id
插入到分配的列表中?尝试:
INSERT INTO assigned_lists (contact_id, list_id)
SELECT contact_id, 24
FROM Contacts
WHERE contact_id NOT IN (
SELECT DISTINCT contact_id
FROM assigned_lists
)
SQL Fiddle示例:您可以尝试以下方法
INSERT INTO assigned_lists (contact_id, list_id)
SELECT contact_id, list_id = 1234
FROM Contacts C
WHERE NOT EXISTS (SELECT 1 FROM assigned_lists A WHERE A.contact_id = C.contact_id )
请记住,not exists子句比not in子句具有性能优势
关于这一点的详细解释可以在这里找到您在其中添加列表id是什么意思?硬编码值还是?是的,我有一个硬编码值,我需要输入。。。到目前为止,似乎没有一个答案是有效的。。。我得到一个错误:“字段列表”中的未知列“列表id”联系人表中没有列表id…如果服务器版本为2005或更高版本,我的答案应该有效;哪个版本?编辑:哇,可能根本不是SQL server。。。哪个RDBMS?谢谢你重复我的答案。@OzrenTkalčecKrznarić这不是你的答案。我正忙着用SQL Fiddle设置这个。这纯粹是巧合……呵呵,有趣的是,SQL语言对不同的人来说是如何工作的:)我一直收到这样的错误:“字段列表”中的未知列“列表id”你能试试第二行吗:选择联系人id,1234
?哇,我不知道。有趣的东西,但不幸的是,在语法上没有在中那么明显。然而,对于大量的记录,我肯定会使用notexists+1.
INSERT INTO assigned_lists (contact_id, list_id)
SELECT contact_id, list_id = 1234
FROM Contacts C
WHERE NOT EXISTS (SELECT 1 FROM assigned_lists A WHERE A.contact_id = C.contact_id )