Union Queries (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Wat ik in juli 2017 zocht:

(select sku from root_discontinued where cat like "Discontinued summer 2017")
union
(select sku from root_child_discontinued where cat like "Discontinued summer 2017")
order by sku;

Voorbeelden

Het is Union select

Let op: union select ipv. alleen union

select
    'TemplateType=HomeImprovement','Version=2014.1223'
union select
    'item_sku', 'external_product_id'

Meer union select's achter elkaar is geen probleem

select

    'TemplateType=HomeImprovement','Version=2014.1223'

union select

    'Lagerhaltungsnummer', 'Hersteller-Barcode'

union select

    'item_sku', 'external_product_id'    

Aantal kolommen moet overeen komen

Oftwel: Dat de laatste kolommen leeg worden gelaten, is helaas geen optie. Dit werkt dus niet:

select

    'TemplateType=HomeImprovement','Version=2014.1223' -- 2 Items

union select

    'Lagerhaltungsnummer', 'Hersteller-Barcode', 'Barcode-Typ' -- 3 items

union select

    'item_sku', 'external_product_id','external_product_id_type' -- 3 items

Aantal kolommen aanvullen met null

Eén manier om het aantal kolommen gelijk te krijgen, is met het keyword null:

select

    'TemplateType=HomeImprovement','Version=2014.1223', null

union select

    'Lagerhaltungsnummer', 'Hersteller-Barcode', 'Barcode-Typ'

union select

    'item_sku', 'external_product_id','external_product_id_type'

Je mag het soms met jezelf doen

Twee keer dezelfde dataset invoegen, lijkt niet te werken, ook al geeft het geen foutmelding:

drop table if exists tmp;
create table tmp (sku tinytext, applications text);
insert into tmp values ("001","hond,kat,herder,siamees,bruine herder,zwarte herder,rui,herder teef");
insert into tmp values ("002","hond,cavia,hazewind,rui,teef,mannetje,vrouwtje");
insert into tmp values ("002","marmotje");
insert into tmp values ("003","hamster");
# select * from tmp;

drop table if exists tmp1;

create table tmp1

(select * from tmp where applications not like "%,%")
union
(select * from tmp where applications not like "%,%");

select * from tmp1;

Maar dit werkt wel:

drop table if exists tmp1;

create table tmp1

(select * from tmp where applications not like "%,%")
union
(select * from tmp where applications like "%,%");

select * from tmp1;

Bronnen