我有两张桌子:
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);
答案 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