减去/比较SQL数据库中的两个表行

时间:2012-06-05 13:19:34

标签: sql database

这是我的问题:
我有一个“机器”表,列的行看起来像这样,但更长:

  

Microsoft应用程序错误报告

Microsoft应用程序   错误报告

Microsoft Office Professional Plus   2010

Microsoft Office OneNote MUI(英语)2010
Microsoft Office InfoPath MUI(英语)2010

  Office Access MUI(英语)2010

Microsoft Office Shared   设置元数据MUI(英语)2010

Microsoft Office Excel MUI   (英文)2010

Microsoft Office共享64位设置元数据   MUI(英文)2010年

我有一个“例外”表,其中有一列的行:

  

Microsoft Office OneNote MUI(英文)2010

Microsoft Office   InfoPath MUI(英文)2010

我想做的只是将第一个表格中的文字(而不是第二个表格)中的文字放在第三个表格中。

对不起,如果我不清楚,我的英语就做到了最好..提前致谢。

编辑:这是我的行的样子。 Click

3 个答案:

答案 0 :(得分:2)

假设您想要在Machines中的行(没有Exceptions中的行),您可以像这样选择它们:

select *
from Machines
where columnName not in (select columnName from Exceptions)

然后您可以使用insert插入它们(假设Machines和newTable具有相同的列):

insert into newTableName
select *
from Machines
where columnName not in (select columnName from Exceptions)

如果它们有不同的列,您可以选择它们。


由于它们位于同一列和行中,因此您需要使用like检查它们是否存在,并replace删除所需的部分。

答案 1 :(得分:1)

我认为你想要的是:

select m.line
from (select distinct line
      from Machines m
     ) left outer join
     Exceptions e
     on m.line = e.line
where e.line is NULL

我将您的问题解释为机器有很多行,其中包含一行文字。您希望机器中的不同行不在例外中。

答案 2 :(得分:0)

我知道我的问题已经过时但是因为我重做了整个程序,我找到了另一个答案,所以如果它可以帮助某人:

for (i = 0; i < SplitMachine.Length; i++)
            {
                for (j = 0; j < SplitExceptions.Length; j++)
                {
                    if (string.Compare(SplitMachine[i],SplitExceptions[j]) == 0)
                    {
                        ListMachines.RemoveAt(i);
                    }
                }
            }

SplitMachine是一个包含我的软件的字符串数组,StringExceptions是一个字符串数组,其中包含我不想显示的软件,因此如果我的SplitMachine中的字符串与SplitExceptions中的字符串匹配,我将删除SplitMachine中的相关字符串。

我希望它很清楚,可以帮助别人。