从表中获取数据,如果它存在于另一个表中,则从那里获取数据

时间:2014-05-07 08:25:45

标签: sql database

假设我有2张桌子(我们称之为Price和SP(特价))。我想从表Price中获取所有行,但如果它与表SP中的某些内容匹配(意味着该行存在特殊价格),则应用这些值。我现在已经测试了一些连接,我不确定它是否是正确的方法,请指教,谢谢!

2 个答案:

答案 0 :(得分:1)

由于可以是SP中的条目,但不必,您需要外连接表。然后检查你是否有值。 COALESCE为您做到了这一点。

select
  price.item,
  coalesce(sp.value, price.value)
from price
left join sp on sp.item = price.item;

答案 1 :(得分:0)

这似乎对我有用mysql:

SELECT
IF(ISNULL(sp.price) OR sp.price='', p.price, sp.price) AS price
FROM price p
JOIN specialprice sp ON sp.id = p.id

<强>更新

重新考虑这一点,只有在specialpriceprice中的每一行都有匹配的行时才会有效 - 如果没有special price值,则只有空字段。