SQL外连接函数

时间:2009-03-16 20:21:46

标签: sql mysql stored-procedures join

我以前写过这个函数,但我似乎无法记住它并且它没有进入版本控制。现在,更多与睡眠剥夺相关的事情,我不记得如何重建它。

这是个主意。我有两个表,“regPrice”和“custPrice”,共享密钥“itemID”。它们都有一个“价格”列,而custPrice也有另一个关键的“acct”,这样如果custPrice中存在价格,它应该返回那个价格。如果没有custPrice条目,则应返回regPrice。

伪代码:

if(select custPrice where acct = passedAcct and itemID = passedItemID) {
   return custPrice;
else 
   return regPrice;

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:6)

SELECT COALESCE(c.price, r.price) AS price
FROM regPrice r LEFT OUTER JOIN custPrice c
 ON (r.itemID = c.itemID AND c.acct = ?)
WHERE r.itemID = ?;

答案 1 :(得分:2)

select r.itemID, r.Acct,
case when c.price is null then r.price else c.price end as price
from regPrice r
left outer join custPrice c
on r.itemID = c.itemID
and r.Acct = @passedAcct
where r.itemID = @passedItemID

答案 2 :(得分:1)

查看COALESCE函数,除非你没有使用NULL,在这种情况下你会想要使用CASE。