admin

子句中的mysql语法

sql

即时通讯使用的是mysql,想知道它的语法。

我想使一个IN子句是这样的:

from_id OR to_id IN (
)

除了我不知道语法是

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

from_id IN (
)

OR

to_id IN (
)

最好的问候亚历山大


阅读 214

收藏
2021-06-07

共1个答案

admin

如果您出于某种原因担心IN子句被运行两次(例如,如果子查询特别复杂并且优化器似乎没有利用缓存结果集的优势),则可以始终将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)
2021-06-07