2012-10-04 44 views
0

我有一个表plist与列list,其中包含逗号分隔的ID(1,2,3,4)。我想要那些id不在逗号分隔列表中的成员的记录。SQL查询来查找记录无法在其他表

+1

哪个RDBMS? SQL Server,MySQL发等 – hims056

+5

唯一有效的答案应该是“重新设计你的DB模式和关于规范化写着”您正在使用哪个数据库服务器 – fancyPants

回答

1

,最好的办法是将逗号分隔列表分裂成一个表,然后搜索反对。

这里是分割字符串代码:

DECLARE @YourTable table (RowID int, Layout varchar(200)) 
INSERT @YourTable VALUES (1,'1,2,3,4') 

;WITH SplitSting AS 
(
    SELECT 
     RowID,LEFT(Layout,CHARINDEX(',',Layout)-1) AS Part 
      ,RIGHT(Layout,LEN(Layout)-CHARINDEX(',',Layout)) AS Remainder 
     FROM @YourTable 
     WHERE Layout IS NOT NULL AND CHARINDEX(',',Layout)>0 
    UNION ALL 
    SELECT 
     RowID,LEFT(Remainder,CHARINDEX(',',Remainder)-1) 
      ,RIGHT(Remainder,LEN(Remainder)-CHARINDEX(',',Remainder)) 
     FROM SplitSting 
     WHERE Remainder IS NOT NULL AND CHARINDEX(',',Remainder)>0 
    UNION ALL 
    SELECT 
     RowID,Remainder,null 
     FROM SplitSting 
     WHERE Remainder IS NOT NULL AND CHARINDEX(',',Remainder)=0 
) 
SELECT RowID,part FROM SplitSting ORDER BY RowID 
+0

? –

+0

我正在使用SQL服务器 – AnandPhadke