我试图使用1个sql语句来生成我想要的结果。
我得到了两个名为order和customers的表,并尝试使用这样的查询
select a.*, b.customers_name
from order a, customers b
where a.customers_id=b.customers_id
order by b.customers_name;
我的问题是order表中有一个假的customers_id,如果customers_id=0,那么
Cuffer-SnNe= =“内部”,它不存在于累加器表中。
在我加入这家公司之前就这样使用过,所以我根本不能修改表。
有办法显示结果吗?
所有订单均来自客户名称为的订单表,如果客户id=0(
最佳答案
select a.*,
COALESCE(b.customers_name, 'In House') as customers_name
from
order a LEFT JOIN customers b ON a.customers_id=b.customers_id
order by
customers_name;
或
select a.*,
CASE
WHEN a.customers_id = 0 THEN 'In House'
WHEN b.customers_name IS NULL THEN 'Unknown'
ELSE b.customers_name
END as customers_name
from
order a LEFT JOIN customers b ON a.customers_id=b.customers_id
order by
customers_name;
不管是哪种方式,为了清楚起见,请使用显式连接。
第一个为任何丢失的客户添加“内部”,第二个为处理丢失的客户,如果customerid不是0,则添加Unknown
关于mysql - 存在不匹配的记录时联接两个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16567266/