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)