(这是对此问题的跟进:Why is my result duplicated when using subquery?)
我怎样才能做出更好的这样的事情?
(select * from tableOne A, tableTwo B where ~) union (select * from tableTwo)
TableOne
select A.userNum from users A, addressbook B where B.userNum=1 and B.phone=A.phone;
返回我朋友的userNum列表。
我使用
TableTwo
select A.userNum from users A, addressbook B,
(select A.userNum from users A, addressbook B where B.userNum=1 and B.phone=A.phone) C
where C.userNum=B.userNum and A.phone=B.phone;
返回my Friend的朋友的userNums列表。您可以看到TableTwo使用TableOne作为表C.
然后我希望得到我朋友的userNum和朋友的朋友'userNum。
TableThree
TableOne union TableTwo;
最后,我将使用TableThree获取那些不是我朋友的朋友的用户名。
select A.userNum from users A where A.userNum NOT IN TableThree;
您可以看到TableThree在查询中使用了两次子查询TableOne。我认为这是一个糟糕的主意,因为重构不好和性能不佳。
有没有更好的方法来编写此查询?