设置标记值基于记录存在于另一个表中

时间:2016-01-20 17:30:52

标签: mysql

使用MySQL。

下面是我的表格结构。

表:A

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

表:B

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,左/右但没有帮助。

RESULT

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

1 个答案:

答案 0 :(得分:1)

只需添加条件即可打印YN标记。

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