mysql语法在子句中

时间:2011-04-26 04:03:16

标签: mysql sql

我正在使用mysql并且想知道它的语法。

我想制作一个这样的IN子句:

from_id OR to_id IN (
)

除了我不知道语法是怎样的

我想避免像这样两次运行in子句:

from_id IN (
)

OR

to_id IN (
)

最好的问候 亚历山大

2 个答案:

答案 0 :(得分:3)

你做不到。只有第二种形式有效。

正如@judda所提到的,不要担心过早优化。查询优化器将尽可能利用缓存。

答案 1 :(得分:0)

如果你有理由担心IN子句被运行两次(例如,如果子查询特别复杂并且优化器似乎没有利用缓存结果集),你总是可以替换带有INNER JOIN的IN子句。

所以这个:

FROM x
WHERE from_id IN (
  subquery
)
OR
to_id IN (
  subquery
)

成为这个:

FROM x
  INNER JOIN (
    subquery
  ) y ON y.value IN (x.from_id, x.to_id)