我有一个查询,从表中选择产品。一个产品可以有多个价格(可以考虑各种价格)和默认价格。+ B( G8 E2 h/ Q) y
自然,这是一对多的关系。我需要选择具有给定价格或默认价格的产品-. ^3 g$ ?! N9 z8 R9 D
这意味着互斥。我知道可以单独查询和WHERE(不是)IN子句或并集语句来完成这个操作,但我坚信一定有更好的方法。我的查询目前如下:: a2 T+ f1 J4 L/ x( _4 |2 E7 K& o& M
SELECT products.*,products_prices.price FROM products RIGHT JOIN products_prices ON (products.id = products_prices.productId) WHERE products_prices.businessId = ? OR products_prices.businessId IS NULL // this needs to become mutual.编辑:我终于用这个查询了。Gordon Linoff稍作修改版: . z% c0 P; K! T4 r, _ SELECT distinct p.*,coalesce(pp.price,defpp.price) FROM products p LEFT JOIN products_prices pp ON p.id = pp.productId and pp.businessId = ? left join products_prices defpp on p.id = defpp.productId and defpp.businessId is NULL - R& V7 f" i" }. F, e- @) E6 P; q 解决方案: