MYSQL Join:查找表a中的所有匹配项,即使表b中没有

时间:2016-11-17 09:03:50

标签: mysql

我有一张桌子:

id  | name | ...
1     paul
2     paula

和表b

id | nameId | active
1    1        1

尝试提出一个导致以下结果的查询:

id  | name | active
1     paul   1
2     paula

请不要忘记示例数据没有多大意义。

我的问题是我需要一个查询来从表a中选择匹配某些条件的所有记录,并在表B中找到这些结果的某个值(如果存在),并将其添加到结果集中,但不省略那些表a中的结果与表b中没有匹配。

到目前为止,我尝试过这样的事情:

SELECT a.id, a.name, b.active FROM a left join b b.nameId=a.id WHERE (something)

但这只给了我第一行。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您的查询应该提供所需的结果,至少减去神秘的WHERE子句:

SELECT a.id,
       a.name,
       COALESCE(CAST(b.active AS CHAR(50)), 'NA')   -- replace NULL with NA
FROM a
LEFT JOIN b
    ON a.id = b.nameId
-- WHERE (you can add a WHERE clause, but it might filter off rows)