У меня в 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 одинаковы (кг), то будет отображаться только одна строка
id | item_id | uom
1 1 kg
Можно ли это сделать с помощью sql? Тогда я просто зациклю его на свой взгляд.
@Saurabh извините, опечатка для id. Да, я буду хранить данные, используя индикацию, чтобы определить, является ли uom или uom1
кажется, слово в теме "создать" следует поменять ... на "показать" или подобное






select
@rownum := @rownum + 1 AS id,
T.*
from (
select `item_id`, `uom`
from Table1
union
select `item_id`, `uom1` as `uom`
from Table1
) T , (SELECT @rownum := 0) r
| id | item_id | uom |
|----|---------|-----|
| 1 | 1 | kg |
| 2 | 1 | box |
Union требуется вместо Union All.
Один простой способ сделать это:
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.
Думаю, здесь должен помочь простой союз:
select distinct * from (
select id, item, uom1 as uom from stuff
union
select id, item, uom2 as uom from stuff
) as unionised
order by unionised.id
Это рабочий пример: http://sqlfiddle.com/#!9/ece687/1
В вашем примере оба идентификатора не могут быть
1, также вы хотите обновить свою таблицу новой строкой?