我在查询Mysql时遇到问题。我有2张桌子,如图片所示,我也想得到如图片所示的结果...
如何用UNION查询?谢谢..对不起,我的英语
您可以通过LEFT JOIN获得此结果:
SELECT
b.date_b as date_all,
a.quota_a,
b.quota_b
FROM
tabel_b b
LEFT JOIN
tabel_a a
ON
a.id_a = b.id_b
您必须从tabel_b获取日期信息,因为否则您将获得id = 4的NULL值。
如果tabel_a的行数也可以超过tabel_b的行数,则必须使用FULL OUTER JOIN
。因为MySQL还没有内置的FULL OUTER JOIN,所以可以通过aLEFT JOIN
和a的UNION来模拟RIGHT JOIN
。正如Strawberry所指出的,id列的相等性可能是简化的结果。为此,我将日期列的相等性添加到联接条件中:
请注意,您必须使用UNION
,而不是UNION ALL
仅获取不同的行。
SELECT
b.date_b as date_all,
a.quota_a,
b.quota_b
FROM
tabel_b b
LEFT JOIN
tabel_a a
ON
a.id_a = b.id_b
AND
a.date_a = b.date_b
UNION
SELECT
b.date_b as date_all,
a.quota_a,
b.quota_b
FROM
tabel_a a
LEFT JOIN
tabel_b b
ON
a.id_a = b.id_b
AND
a.date_a = b.date_b
演示(注意:使用示例数据可以获得与第一个相同的结果)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句