查询以查找某些列是否在数组中

时间:2012-05-01 13:13:55

标签: mysql

我有一个复杂的嵌套查询,它位于一个连接中,是否可以找到与该查询匹配的多个列,而不是在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运行两次,而只需要运行一次,而不是将它与几个父查询列匹配。

1 个答案:

答案 0 :(得分:0)

如果您的子查询工作正常并且您启用了查询缓存,则无需担心性能问题。如果它是一个过于复杂的问题,那么也许你可以使用proc来进行这个查询:将sub的结果放入临时表并加入它。

有很多方法可以解决这个问题。