SQL查询从两个表中进行选择,如果存在值则返回

时间:2016-05-13 11:19:48

标签: mysql sql

我有两张桌子:

callcosts
callcosts_custom

是否有一种方法可以从两个表中进行选择并从callcosts_custom返回cost的值,如果该行存在且它不存在,则从price <返回列callcosts < / p>

使用以下WHERE子句:

WHERE callcosts_custom.parent = callcosts.sequence

基本上,callcosts表中包含所有默认数据,并且可以为每个客户添加自定义数据。

关系如下:

call_costs.sequence = callcosts_custom.parent

所以我想检查callcosts_custom中是否存在特定callcosts_custom.customer的行。如果是,则返回callcosts_custom.cost,如果不存在则返回callcosts_price

更新后的查询:

select b.cost

来自call_costs_custom b 其中a.sequence = b.parent AND b.customer_seq ='124' 联合所有 选择a.retail 来自call_costs a 其中a.sequence ='4706'和       不存在(从call_costs_custom b中选择1,其中b.parent = a.sequence);

3 个答案:

答案 0 :(得分:0)

是的。 。 。这听起来像是优先级查询。这通常看起来像

select ccc.price
from callcosts_custom ccc
where ccc.?? = ??
union all
select cc.price
from callcosts ccc
where cc.?? = ?? and
      not exists (select 1 from callcosts_custom ccc where ccc.?? = cc.??);

从您的问题中不清楚列是什么。

答案 1 :(得分:0)

这可以通过左连接表来完成(假设每行必须存在于callcosts中,并且callcosts_custom中可能存在或不存在,但不是相反)并且使用{ {1}}。您还没有提供有关表格的太多信息,但我假设有一些ID列来识别行:

coalesce

答案 2 :(得分:0)

这应该适合你:

SELECT IFNULL(cc.cost, c.price) cost
FROM      callcosts c
LEFT JOIN cc.parent = c.sequence