我有一个表“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或没有任何备份路径的所有路径(主要和备份)。 感谢
答案 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'
);