对不起...第一次在这里和业余...
我有两个不同的表(contact_data_a和contact_data_b),来自两个不同的部门,如下:
contact_data_a
id customer contact
11200 Müller KG Hans
11201 Huber GmbH Patrick
11203 Gruber GmbH Manu
11205 Meyer GmbH Manu
contact_data_b
id customer contact
11200 Müller E. Peter
11202 Schubert AG Louis
11204 E.Schmidt Louis
11205 Mayer GmbH Peter
最终我想拥有的是这样的:
contact_data_all
id customer contact_a contact_b
11200 Müller KG Hans Peter
11201 Huber GmbH Patrick 0
11202 Schubert AG 0 Louis
11203 Gruber GmbH Manu 0
11204 E. Schmidt 0 Louis
11205 Meyer GmbH Manu Peter
" ID"是清晰且独特的,但是"客户"中的名称可能会有所不同(包括拼写错误)。这没问题。信息可以来自任一表。我的问题是联系列。列表contact_data_a的联系人应显示在Contact_A(如果不存在的情况下)中,并且来自列表contact_data_b的联系人应显示在contact_b(或null)中。
一个朋友说我可能会使用
`SELECT id, customer, GROUP_CONCAT(contact_a) as contact_a,GROUP_CONCAT(contact_b) as contact_b FROM
(SELECT id, customer, contact_a, null as contact_b FROM contact_data_a
UNION
SELECT id, customer, null as contact_a, contact_b FROM contact_data_b)
GROUP BY id ORDER BY id`
,但我只有SQL 2008,因此尚不可用。预先感谢您的任何帮助或想法!
尝试这个 -
SELECT
id
, customer
, MAX(contact_a) AS contact_a
, MAX(contact_b) AS contact_b
FROM (
SELECT id, customer, contact_a, '0' AS contact_b
FROM contact_data_a
UNION ALL
SELECT id, customer, '0' AS contact_a, contact_b
FROM contact_data_b
) t
GROUP BY id, customer
ORDER BY id