我正在使用mysql并且想知道它的语法。
我想制作一个这样的IN子句:
from_id OR to_id IN (
)
除了我不知道语法是怎样的
我想避免像这样两次运行in子句:
from_id IN (
)
OR
to_id IN (
)
最好的问候 亚历山大
答案 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)