Lad os antage, at du har to tabeller, du vil UNION
CREATE TABLE Table1
(`id` int, `name` varchar(32));
CREATE TABLE Table2
(`id` int, `name` varchar(32));
Og eksempeldata
tabel1:
| ID | NAVN ||----|-------|| 1 | navn1 || 2 | navn2 || 3 | navn3 |
tabel 2:
| ID | NAVN ||----|--------|| 11 | navn11 || 22 | navn22 || 33 | navn33 || 1 | navn1 |
At emulere UNION ALL
SELECT COALESCE(t1.id, t2.id) id,
COALESCE(t1.name, t2.name) name
FROM
(
SELECT TABLE_NAME <> 'table1' n
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = SCHEMA()
AND TABLE_NAME IN('table1', 'table2')
) t LEFT JOIN table1 t1
ON t.n = 0 LEFT JOIN table2 t2
ON t.n = 1
Output:
| ID | NAVN ||----|--------|| 1 | navn1 || 2 | navn2 || 3 | navn3 || 11 | navn11 || 22 | navn22 || 33 | navn33 || 1 | navn1 |
At emulere UNION
du skal blot tilføje DISTINCT
SELECT DISTINCT COALESCE(t1.id, t2.id) id,
COALESCE(t1.name, t2.name) name
FROM
(
SELECT TABLE_NAME <> 'table1' n
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = SCHEMA()
AND TABLE_NAME IN('table1', 'table2')
) t LEFT JOIN table1 t1
ON t.n = 0 LEFT JOIN table2 t2
ON t.n = 1
Output:
| ID | NAVN ||----|--------|| 1 | navn1 || 2 | navn2 || 3 | navn3 || 11 | navn11 || 22 | navn22 || 33 | name33 |
Her er SQLFiddle demo