我有一个返回订单详细信息的查询,我想从 briisk 表中获取它找到的交易的信息。我也希望它能够显示订单,即使 briisk table 什么也没有。
如果我添加最后一行(以及 flostream.briisk.master = ""
),我的查询仅返回一个结果,而不是两个。
SELECT *
FROM (SELECT orderno,ifnull(dealid,sales_rule) as DealIDCombo from flostream.orders left join mobileheads.surveys on mobileheads.surveys.order_number = flostream.orders.externalreference) as first
INNER JOIN flostream.orders on first.orderno = flostream.orders.orderno
LEFT JOIN flostream.briisk on first.dealidcombo = flostream.briisk.uniquereference
WHERE first.orderno in (359692,359683)
//AND flostream.briisk.master = ""
最佳答案
当您使用左外连接
时,您需要在on
子句中包含第二个表的过滤条件。所以试试这个:
SELECT *
FROM (SELECT orderno,ifnull(dealid,sales_rule) as DealIDCombo
from flostream.orders left join
mobileheads.surveys
on mobileheads.surveys.order_number = flostream.orders.externalreference
) as first INNER JOIN
flostream.orders
on first.orderno = flostream.orders.orderno LEFT JOIN
flostream.briisk
on first.dealidcombo = flostream.briisk.uniquereference AND
flostream.briisk.master = ""
WHERE first.orderno in (359692, 359683)
第一个表的条件应放在 WHERE
子句中。
关于sql - 无法使用 SQL/Bigquery JOIN 获取两条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27487227/