2016-02-12 82 views
0

我有這個疑問:可能不存在SQL連接表/記錄

SELECT a.total 
    , b.total 
    , (a.total - b.total) as dv 
    , a.customer_name 
    , a.report_date 
    , b.report_date 
    FROM topsourcesfcy a 
CROSS 
    JOIN topsourcesfcy b 
WHERE a.customer_name = b.customer_name 
    AND a.customer_name = 'SPECIALTY DRILLING FLUIDS LIMITED' 
    AND a.report_date = '2016-2-10' 
    AND b.report_date = '2016-2-9' 
    AND a.report_date! = b.report_date 

但問題是有時記錄可能存在於a,而不是在bb而不是a,這將導致該查詢將執行爲false,但如果它僅存在於一個或兩個中,我仍然希望將其選中。 謝謝。

+0

見mysql的全外連接。 – Strawberry

+0

@Strawberry mysql不支持完整的外部聯接,您需要聯合來模擬它。 – Shadow

+0

@Shadow我很清楚這一點,感謝 - 因爲使用這些關鍵字的簡單搜索將揭示。 – Strawberry

回答

0

瞭解更透徹的答案在這裏: Full Outer Join in MySQL

你想要的是一個完整的外部聯接,但MySQL不支持它。

相反,你可以用兩個外部的組合連接(左,右)和工會,下面還將刪除受騙者:

SELECT * 
FROM `t1` 
LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id` 

UNION 

SELECT * 
FROM `t1` 
RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id` 
WHERE `t1`.`id` IS NULL;