我正在尝试查询 3 个几乎不相关的表。所有三个的关系都是一列(一个电子邮件地址字段)。我创建了一个“联合所有”并从所有 3 个表中提取电子邮件,然后在最后进行分组以确保没有重复(我也尝试过联合)。
我的问题是一切正常,但我需要知道第一个表上的每个电子邮件地址是 1、0 还是 NULL。我尝试拉入列,然后将 '"" AS Col1' 添加到其他表(避免错误 1222,匹配列)。我可以这样做,但表 1 中的数据会被表 2 中的“无”覆盖,然后又被表 3 中的“无”覆盖。
这是查询:
SELECT * FROM (
SELECT email AS emails, COUNT(email) AS qty, '' AS custCountry, '' AS custID, '' AS cName, active AS newsletter
FROM newsletter
WHERE email != ''
GROUP BY email
UNION ALL
SELECT email AS emails, COUNT(email) AS qty, '' AS custCountry, '' AS custID, '' AS cName, '' AS newsletter
FROM orders
WHERE email != ''
GROUP BY email
UNION ALL
SELECT email AS emails, COUNT(email) AS qty, country AS custCountry, customerID AS custID, countries.name AS cName, '' AS newsletter
FROM customers
LEFT JOIN countries ON customers.country = countries.zoneID
WHERE email != ''
GROUP BY email
) AS newtable
GROUP BY emails
ORDER BY qty DESC
它一直有效,直到我添加“活动”列,此时它会覆盖活动列中的任何内容。我需要第三个表,因为它会提取我需要保留的位置数据。如果我将第一个表放在最后,它会给我“活动”但会覆盖位置列。
我不是 MySQL 专业人士(看一看!)所以非常感谢任何帮助。