我试图使用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/

10-16 14:41