如何使用 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
还有一个问题。我需要你的帮助。
列出已输入相同 (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