2016-01-20 42 views
0

使用MySQL。在另一個表中存在設置標誌值記錄的基礎

下面是我的表格結構。

表:一個

aId(PK)  aValue1  aValue2 
---------------------------------- 
1   value-a1 value-b1 
2   value-a2 value-b2 
3   value-a3 value-b3 
4   value-a4 value-b4 

表:乙

bId(PK)  aId(FK)  bValue1  bValue2 
----------------------------------------------------- 
1   1   val-1  value-1 
2   1   val-2  value-2 
3   2   val-3  value-3 

如何能夠做到下面的結果在單個查詢。 如果表中存在相關記錄,我想要表中的所有記錄:A和標誌值對每個記錄:B 我試着INNER JOIN,左/右但沒有幫助。

結果

aId  aValue1  aValue2    bId (flag if record exist Y else N) 
----------------------------------------------- 
1   value-a1 value-b1  Y 
2   value-a2 value-b2  Y 
3   value-a3 value-b3  N 
4   value-a4 value-b4  N 

我的查詢:這回我超過4行。這是不對的

SELECT 
c.* , if(d.bId is NULL,'N','Y') 
from a c 
LEFT JOIN b d ON a.aId = d.aId 
+2

爲什麼你的左連接不起作用?這是正確的解決方案。你能證明你的嘗試嗎?將它添加到你的問題上。 –

+1

@JorgeCampos是正確的,只要使用if(bid爲NULL,'N','Y')爲Y或N選擇 – developerCK

+0

添加SQL查詢屬性。問題是..獲取冗餘數據 – fresher

回答

0

只需添加條件印刷品YN標誌。

SELECT DISTINCT c.* , IF(d.bId is null, 'Y', 'N') 
    FROM tableA c 
     LEFT JOIN tableB d ON a.aId = d.aId 
+0

如果TableA有4條記錄,則查詢應該只返回4條記錄,並基於這4條記錄,如果id存在於第二個TableB中,標誌值Y/N。但查詢返回冗餘數據 – fresher

+0

對不起我的壞...其工作不知道爲什麼上次錯誤 – fresher

+0

@fresher我做了一個編輯添加'DISTINCT'命令:) –