如何使用 MySQL 比较元组?

How can I compare tuples using MySQL?

还有一个问题。我需要你的帮助。

列出已输入相同 (identical_with) 但与疾病关联不同的药物。

identical_with

协会

我不知道该怎么做。

那样的话结果应该是:

结果

这对于评论来说有点长,虽然答案基本上是 "you can't do this in MySQL"。

您正在寻找的支持是针对分层或递归查询的。除了 MySQL 之外,几乎每个数据库都 built-in 支持这些类型的查询。这基本上给您留下了四个选择:

  • 切换到使用具有此类支持的数据库。在免费数据库中,包括 Postgres、SQL Server Express 和 Oracle Express。
  • 如果限制等价深度,可以使用repeated self joins.
  • 您可以在存储过程中使用 while 循环来执行此操作。但是,这不是单个 SQL 语句。
  • 使用 nested set model
  • 使用存储完整路径的方法。

不幸的是,后两种方法需要触发器来维护插入、更新和删除的数据结构。

为了解决你的问题,你需要使用两倍的table关联。以下代码应该没问题:

select
    i.Name_1, i.Name_2
from
    association a
inner join
    identical_with i
    on i.Name_1 = a.Name
inner join
    association a2
    on i.Name_2 = a2.Name
where
    a2.Fachname <> a1.Fachname