SQL - 如果排除表中的结果(如果它们具有两列中的相同数据)

问题描述:

例如,我有一个货物装运表,并在该表中有两列;起源和目的地。我该如何做到这一点,以便我的select语句中得到的结果将被排除,如果这些列中的值相同?SQL - 如果排除表中的结果(如果它们具有两列中的相同数据)

更具体地说,我可以有一行,其中Origin和Destination等于'Chicago',我将如何排除该行,但不排除具有Origin Destination作为Chicago的行。

+0

对不起,我应该补充说,它应该只对特定的始发地和目的地,因此,如果他们都是例如'达拉斯'我想要显示,但如果他们都'芝加哥'我不希望这显示' –

SELECT 
    * 
FROM 
    Cargo 
WHERE 
    Origin != Destination 
+0

这工作完全谢谢你!你知道如何排除来源和目的地的特定名称,以便所有其他重复项都可以被允许吗? –

+0

你能澄清你最后一个问题吗?你问如何排除一个特定的值,如果它显示为起源和目的地,但允许其他重复值?如果是这样,你可以使用'SELECT * FROM Cargo WHERE Origin 'val'OR Destination 'val'' –

+0

这正是我所要求的,对于混淆抱歉。 –

您可以使用WHERE子句排除其中起点和终点都等于使用

SELECT * 
    FROM SHIPMENTS 
WHERE ORIGIN <> 'val' 
     OR DESTINATION <> 'val' 

,或者一个特定值的所有行,如果你想排除其中起点和终点都是项目在值列表中,可以使用

SELECT * 
    FROM SHIPMENTS 
WHERE ORIGIN <> DESTINATION 
     OR ORIGIN NOT IN ('list', 'of', 'vals') 

如果您只是需要比较两列,请使用不等于运算符=!或<>在您的where子句中,具体取决于您的需求。

选择... 原属!=目标

希望它能帮助。

这里有一个关于这个运营商后Not equal <> != operator on NULL

试试这个:在变化的要求

SELECT * 
FROM SHIPMENTS 
WHERE ORIGIN <> 'Chicago' AND DESTINATION <> 'Chicago' 
+0

谢谢,我会尝试这个!如果我使用类似条款来排除以相同城市名称开头的结果,这也可以起作用吗?例如,如果我添加并且 (OriginName不像'Chicago%'和DestName不像'Chicago%') –

+0

当然它必须解决那个和其他必需的条件。 – Susang