在mysql中使用MINUS

时间:2014-11-18 08:46:31

标签: mysql sql database

我有一个表“trail”,它维护a点如何连接到b点的记录。如果有任何中间点,表也记录它们。在''type'中有一列指示是否此连接是主要或备份(类型只能有2个值'Main'或'Backup',备份路径是可选的)和其他列Conn_ID('Main'和'Backup'连接将具有相同的Conn_ID)可能会也可能不会通过一些共同点。

我想列出所有连接(基本上是Conn_ID),通过一个点,如果X被取出,将会影响X(一个中间点)。这有可能,如果是这样的话怎么样?如果您需要更多信息,请告诉我。表有近140列,其中只有2列可供使用。

我尝试使用减号但它不起作用。我应用的逻辑如下:

select Conn_id from trail where point = 'X'
MINUS
select Conn_id from trail where point in (select distinct(Conn_id) from trail where point = 'X') AND Type = 'Backup'

有效地为我提供了通过X或没有任何备份路径的所有路径(主要和备份)。 感谢

1 个答案:

答案 0 :(得分:0)

MySQL不支持MINUS。只有一列,您可以使用NOT IN轻松替换它:

select Conn_id 
from trail 
where point = 'X'
and Conn_id not in
(
  select Conn_id 
  from trail 
  where point in (select distinct(Conn_id) from trail where point = 'X') 
  and Type = 'Backup'
);