offers
表包含报价及其详细信息。
combinedofferstbl
有两列:offer_id和combinedwithoffer_id。
我想做类似的事情
SELECT *
from combined offers
where combinedofferstbl.offer_id
OR combinedofferstbl.combinedwithoffer_id IN (
SELECT offer_id
from offers_tbl)
这样我就可以找到在“左”或“右”组合的组合报价。
我不能那样使用 OR。
有什么方法可以在不重复
IN (...offerstbl...)
两次(合并表中两列各一次)的情况下实现此操作?
我想这样做是因为 IN 子查询的真实版本相当长。
您可以使用
exists
运算符实现此功能:
SELECT *
FROM combinedoffers_tbl c
WHERE EXISTS (SELECT *
FROM offers_tbl o
WHERE o.offer_id IN (c.offer_id, c.combinedwithoffer_id))
您可以使用
INNER JOIN
来做到这一点:
SELECT c.*
FROM combinedofferstbl c
INNER JOIN offers_tbl o ON o.offer_id = c.offer_id
OR offers_tbl o on o.offer_id = c.combinedwithoffer_id