0
请考虑我有两张桌子。如何从Sql Server 2005获取已过滤的记录?
一个是“Table1”,如下所示。
还有一个表是 “表2”,如下所示。
现在,这里我需要的是,我需要所有从表1的ID是不表2中的参考列中的记录。
请指导我如何做到这一点。
在此先感谢。
请考虑我有两张桌子。如何从Sql Server 2005获取已过滤的记录?
一个是“Table1”,如下所示。
还有一个表是 “表2”,如下所示。
现在,这里我需要的是,我需要所有从表1的ID是不表2中的参考列中的记录。
请指导我如何做到这一点。
在此先感谢。
如何与您现有的架构做(不能使用索引):
SELECT Table1.*
FROM Table1
WHERE NOT EXISTS
(
SELECT 1
FROM Table2
WHERE CONCAT(',', Table2.Reference, ',') LIKE CONCAT('%,', Table1.ID, ',%')
)
该如何工作是完全包裹在用逗号分隔的Reference
列的每一个值。您的示例数据将以,2,3,
和,7,8,9,
结尾。然后,您可以安全地搜索该字符串中的,<Table1.ID>,
。
如何真正做到这一点:
规范化数据库,并摆脱那些丑陋而无用逗号分隔的列表。
修复您的表2是:
SlNo | Reference ------+----------- 1 | 2 1 | 3 2 | 7 2 | 8 2 | 9
,并添加table2Names为:
SlNo | Name ------+--------- 1 | Test 2 | Test 2
然后,你可以简单地做:
SELECT Table1.*
FROM Table1
WHERE NOT EXISTS(SELECT 1 FROM Table2 WHERE Table2.Reference = Table1.ID)