我有一个复杂的嵌套查询,它位于一个连接中,是否可以找到与该查询匹配的多个列,而不是在Join中重复查询?即:
select * from
A left join B on a.xid=b.xid and
(a.userid or b.userid) in (select userid from A where..)
^^^不想复制嵌套查询...
有一个嵌套查询应该匹配父查询中的几个列(如上例所示)。简单的方法是多次复制嵌套查询。即 -
select * from A
left join B
on a.xid=b.xid
and a.userid in (select userid from ...)
and b.userid in (Select userid from ....)
但是 - 由于子查询有点复杂,我不希望mysql运行两次,而只需要运行一次,而不是将它与几个父查询列匹配。
答案 0 :(得分:0)
如果您的子查询工作正常并且您启用了查询缓存,则无需担心性能问题。如果它是一个过于复杂的问题,那么也许你可以使用proc来进行这个查询:将sub的结果放入临时表并加入它。
有很多方法可以解决这个问题。