我有两个表格:
我想要获取仅包含边缘(id1,name1,id2,name2)的结果集,以便BOTH id1和id2都在用户表中。这似乎很简单,但我无法做到。我的尝试:
任何提示?
edges
和users
edges
(带有约束:id1 < id2):
id1
name1
id2
name2
users
:
id
name
我想要获取仅包含边缘(id1,name1,id2,name2)的结果集,以便BOTH id1和id2都在用户表中。这似乎很简单,但我无法做到。我的尝试:
SELECT
e.id1 AS id1,
e.name1 AS name1,
e.id2 AS id2,
e.name2 AS name2
FROM
edges AS e,
users AS u
WHERE u.id = e.id1
UNION
SELECT
e.id1 AS id1,
e.name1 AS name1,
e.id2 AS id2,
e.name2 AS name2
FROM
edges AS e,
users AS u
WHERE u.id = e.id2
任何提示?
O(|V| * |E|)
的操作,所以这些JOIN一起会导致运行时间为O(|V| * |E|^2)
?可能这是我们能做到的最好的了吧? - lollercoasterO(1) * O(|V|)
,然后再增加另外O(|V|)
,因此总复杂度为O(|V|)
。 - lollercoaster