我在MySQL中有下表:

id | item_id | uom | uom1
1    1         kg    box


当我从表中选择全部时,它将显示一行。

如果uom和uom1不同,我想使其显示两行。

例如,uom = kg和uom1 = box,则结果将显示

id | item_id | uom
1    1         kg
2    1         box


如果uom和uom1相同(kg),则仅显示一行

id | item_id | uom
1    1         kg


是否可以使用sql做到这一点?然后我将其循环显示。

最佳答案

一种简单的方法是

select id, item_id, uom from tbl union
select id, item_id, uom1 from tbl


UNION默认情况下将滤除重复的行。不需要其他“技巧” ...

@Neeraj Wadhwa建议将第二行更改为:

select id, item_id, uom1 as uom from tbl


这是可能的,并且将产生相同的结果,但实际上不是必需的。无论如何,UNION构造中的列名称将由第一条select语句确定。

10-07 15:05