SQL查询价格检索

时间:2012-02-10 02:36:45

标签: mysql sql

我有2张表存储产品的价格。

主表格为Product,其中包含所有产品详细信息。

产品的价格存储在两个不同的表中,具有以下结构:

  • 变体: p_idprice
  • advance_price: p_idprice

现在我想合并这些表以获得产品的所有价格。

注意:一个产品在variant表或advance_price表中都有价格。不是两个表。

我正在寻找这样的结果:

product.id, price 

(这可以来自variant表或advance_price表)

任何想法都将受到赞赏。

1 个答案:

答案 0 :(得分:3)

您需要的是COALESCE()来自两个表的价格,并带有适当的连接:

SELECT
  Product.p_id,
  COLAESCE(variant.price, advance_price.price) AS price
FROM
  Product
  LEFT JOIN variant ON Product.p_id = variant.p_id
  LEFT JOIN advance_price ON Product.p_id = advance_price.p_id

COALESCE()将在其参数中获取第一个非null值。如果给定LEFT JOIN的{​​{1}}或variant表中没有记录,则使用advance_price