我有三个表,分别是:user
, special_order
, corp_order
。
我想要一个结果,它可以在两个订单表中显示用户下的所有订单。
我的 SQL 语句是:
SELECT
u.user_id,
c.user_id,
s.user_id
FROM
corp_user u
JOIN
special_order s ON s.user_id = u.user_id
JOIN
corp_orders c ON c.user_id = u.user_id;
这是返回不必要的数据。
您要的是所有订单,无论是特殊订单还是公司订单。确定您想要从每个 corp_user 表中获取哪些列,并为每个订单表中的订单匹配列,然后执行两个由UNION ALL
. (您想要UNION ALL
,不是UNION
因为否则如果所有字段中都有完全匹配,重复项将被消除。
举例说明:
SELECT
u.user_id,
s.order_id
FROM
corp_user u
INNER JOIN special_order s on u.user_id = s.user_id
UNION ALL
SELECT
u.user_id,
c.order_id
FROM
corp_user u
INNER JOIN corp_order c on u.user_id = c.user_id
注意:字段必须完全匹配 - 不一定是名称,而是位置。将使用来自第一个查询的名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句