我有2代表「conta
」和「details
」和兩個表在不同的情況下,空值和數據MySQL的左外連接排除
conta
id col1 col2 col3 col4
1 Hi Bye See YOU
2 Hello (NULL) (NULL) (NULL)
details
id new_column1 new_column2 new_column3
1 bye see you
我想聯接基於col2=new_column1 and col3 = new_column2 and col4 = new_column3
申請並獲得價值存在於conta
,而不是在details
,所以我的輸出將是
conta
id col1 col2 col3 col4
2 hello (NULL) (NULL) (NULL)
但不知何故,我不能這樣做。我寫下面的查詢,但它根本不會導致我想要的值。
SELECT `id`,`col1`,`col2`,`col3`,`col4` FROM `conta`
WHERE LOWER(`col2`) + LOWER(`col3`) + LOWER(`col4`) NOT IN (SELECT DISTINCT(LOWER(`new_column1`) + LOWER(`new_column2`) + LOWER(`new_column3`))
FROM `details`);
它只是給我沒有結果!在顯示屏上
任何幫助?
編輯:我試着在@Uueerdo建議的下面查詢,它並沒有給我我想要的。
SELECT conta.id,`col1`,`col2`,`col3`,`col4` FROM `conta`
LEFT OUTER JOIN `details`
ON ((conta.col2 IS NULL AND details.new_column1 IS NULL)
OR (LOWER(conta.col2) = LOWER(details.new_column1)))
AND ((conta.col3 IS NULL AND details.new_column2 IS NULL)
OR (LOWER(conta.col3) = LOWER(details.new_column2)))
AND ((conta.col4 IS NULL AND details.new_column3 IS NULL)
OR (LOWER(conta.col4) = LOWER(details.new_column3)))
WHERE details.id IS NULL
在輸出中col2
我看到的值「操作」,其也存在於new_column1
在details
表。這意味着,因爲我想申請左外連接排除我甚至使用LEFT JOIN代替LEFT OUTER JOIN試過它不應該存在於輸出和它不工作要麼
EDIT2:我找到了解決方案。查詢工作並完成這項工作。 Exept,我不得不運行一個命令來替換我應用連接到NULL值的列中的所有空白單元格。
我認爲您需要清理一下您的示例數據;它看起來像第一行的5個字段中有6個值。 – Uueerdo
我的不好!我剛剛糾正了這一點。我其實很好奇,知道爲什麼它不給我想要的結果。我的意思是我的查詢出了什麼問題。 – Enthusiast
請參閱編輯我的答案。 – Uueerdo