2016-12-08 55 views
0

我有兩個表,分別叫做tc_revenuetc_ratesMysql加入查詢與條件和不同的記錄

  • tc_revenue包含: - 代碼,收入的startDate,結束日期
  • tc_rate包含: - 代碼,梯隊,支付,的startDate,結束日期

現在我需要記錄其代碼= 100記錄應該是唯一的..

我已經使用這個查詢

SELECT * 
FROM task_code_rates 
LEFT JOIN task_code_revenue ON task_code_revenue.code = task_code_rates.code 
WHERE task_code_rates.code = 105; 

但我得到的重複記錄幫助我找到正確的解決方案。

如:

enter image description here

在這個例子中

每一條記錄被重複2次

感謝

+0

你是什麼意思「記錄應該是不同的」?請編輯問題並提供樣本數據和期望的結果。 –

+0

獨特的意思是獨特的。我有5條記錄,代碼= 100.在第一個表格和第二個表格中,我只有2.唯一性將基於開始日期 –

+0

。 。 *樣本數據*。這就是你如何表達你的真正意思。 –

回答

0

由哪個領域,你需要獨特的使用羣。例如,如果你想每一個代碼行,然後:

SELECT * FROM task_code_rates LEFT JOIN task_code_revenue ON task_code_revenue.code = task_code_rates.code 
where task_code_rates.code = 105 
group by task_code_revenue.code, task_code_revenue.tier 
+0

但這將只返回一條記錄。我有5個記錄,代碼= 100.在第一個表格和第二個表格中,我只有2.唯一性將基於開始日期 –

+0

我只是舉了一個例子。選擇您需要獨特的字段組合。如果你想每startDate一行,然後在組中使用。 –

+0

可以請你幫我查詢 –

0

如果代碼承認這兩個表一式兩份,並執行只能加入使用代碼,那麼你會從一個表中獲取所有匹配的行之間的cartessian產品和來自另一個的所有匹配行。

如果你在第一張表5個記錄,代碼100和2條記錄與第二個表代碼100,您將獲得5倍2的結果,所有組合來自左,右相匹配的行之間。

除非您在一個(或兩個)表中有重複內容,否則所有10個結果都會在來自一個表格,另一個表格或兩者的Colums中有所不同。

但是,如果您希望從第一個表中獲得兩個組合行和三個行,而第二個表中的列爲null,則不會發生這種情況。

這就是連接是如何工作的,無論如何,如果數據庫沒有生成所有組合,並且讓你決定哪裏子句,數據庫應該如何決定要組合哪些行?

也許您需要在ON子句中添加更多條件,例如匹配日期?