MySQL使用2个条件选择查询

时间:2017-11-21 01:57:21

标签: mysql jointable

我的以下查询仅在dc_detail表中存在dcno时显示结果 但实际上我需要的是,即使这样,如果在dc_detail表中不存在dcno,它应该将dcno定义为0并选择该结果 提前致谢

SELECT p.po_no as id, DATE_FORMAT(p.po_date, '%d-%m-%Y')as po_date, p.customer, p.cust_po as po_no,p.tot_ord_qty,
DATE_FORMAT(p.delivery_date, '%d-%m-%Y')as delivery_date,p.dc_status,p.inv_status,p.tot_dc_qty,p.tot_inv_qty,
GROUP_CONCAT(distinct d.dc_no SEPARATOR ', ') as dc FROM po_header p, dc_details d  
where p.cust_po=d.cust_po  
group by p.cust_po;

1 个答案:

答案 0 :(得分:0)

您应该使用左连接来包含没有详细信息的标头。这将为您提供不存在的详细信息字段的空行。 要获取值0而不是null,可以使用coalesce函数。 查询的相关部分是

SELECT COALESCE(d.dc_no, 0),...
FROM po_header p LEFT JOIN dc_detail d ON p.cust_po=d.cust_po

Coalesce函数返回第一个非null参数。