mysql按字段排序行显示,即使为空

7gcisfzg  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(298)

我有两个表(bom和bom\u部分)。需要内部连接和显示 stock_deduct,GRN_id,part_id 领域。
表1(bom):

表2(bom\U零件):

mysql查询:

SELECT 
    bom_part.stock_deduct,
    bom_part.GRN_id,
    bom.part_id 
FROM 
    bom 
    INNER JOIN 
    bom_part 
        ON bom_part.BOM_id=bom.id  
WHERE 
    batch_id='0' AND
    `sr_no`=23 
ORDER BY 
    FIELD(part_id, 34,8,36,6)

查询结果:

预期结果:
即使 part_id 本例中字段为空 8, 6 ,我只想在下面提到的结果中显示库存扣除字段为1的零件id。
库存扣减额\u idpart \u id1634293grn134181grn3362grn23616
如您所见,expected result表中的第4行和第7行是指定的 ORDER BY FIELD(part_id, 34,8,36,6) 命令。
提前谢谢。

ct3nt3jp

ct3nt3jp1#

我想你想要一个 left join ,和筛选:

select coalesce(bp.stock_deduct, 1) as stock_deduct, bp.grn_id, b.part_id 
from bom b
left join bom_part bp on bp.bom_id = b.id  
where b.batch_id = 0 and b.sr_no = 23 and b.part_id in (34, 8, 36, 6)
order by field(part_id, 34, 8, 36, 6)

过滤器打开 bom.part_idwhere 子句带来 bom . 我们把零件表和 left join ,因此不匹配的BOM表不会被过滤掉。最后, coalesce() 转向缺失 stock_deduct1 .

相关问题