Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中使用减号_Mysql_Sql_Database - Fatal编程技术网

在mysql中使用减号

在mysql中使用减号,mysql,sql,database,Mysql,Sql,Database,我有一个表“trail”,它维护点a如何连接到点b的记录。如果有任何中间点,该表也会记录它们。trails“type”中有一列指示此连接是主连接还是备份连接(type只能有2个值“main”或“backup”,具有备份路径是可选的)和其他列Conn_ID(“主”和“备份”连接将具有相同的Conn_ID),可能通过也可能不通过一些公共点 我想列出通过一个点的所有连接(基本上是Conn_ID),比如X(中间点),如果X被取出会受到影响。这是可能的,如果是,如何进行?如果您需要更多信息,请告诉我。表中

我有一个表“trail”,它维护点a如何连接到点b的记录。如果有任何中间点,该表也会记录它们。trails“type”中有一列指示此连接是主连接还是备份连接(type只能有2个值“main”或“backup”,具有备份路径是可选的)和其他列Conn_ID(“主”和“备份”连接将具有相同的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的路径(包括主路径和备份路径),或者没有任何备份路径。
谢谢

MySQL不支持减号。只有一列,您可以轻松地将其替换为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'
);

MINUS
是Oracle特有的。它的SQL标准是
,除了
MySQL或Hi Thorsten的可能副本都不支持这两个标准,到目前为止,查询看起来不错,我已经开始得到一些积极的结果。好吧,我只是复制了你的查询并用NOT in部分替换了MINUS。我不知道,这个查询是否支持这正是您所需要的(我没有费心去想它是如何告诉真相的:-)我注意到现在您使用了
distinct(Conn\u id)
。distinct通常不与括号一起使用;它始终在整行上工作。此外,在中处理一组值。2在(1,2,3)中,2在(1,2,2,3)中。您不必告诉dbms该集合必须是独立的。这可能意味着dbms不必要的工作。因此,请将
distinct(Conn\u id)
替换为
Conn\u id