Mysql子查询如何仅从Table1中获取所有记录,并且如果找不到与Table2匹配的记录,则仍将其列为null或其他内


Mysql subquery how can i get only all records from Table1 and if no match found with Table2 still list them as null or something else?

1)我有两个表:

+------                      +---------
topic                         mytask
+---------                   +---------
ID | What                    ID | TopicID
----------                   ------------
1  | A                        1 | 1
2  | B

2) 我有如下SQL:

SELECT 
  a.id, b.id
FROM 
  topic a
JOIN (
 SELECT 
  b.id,b.topicid
 FROM 
  mytask b
) b on (b.topicid=a.id)

3) 我的输出如下(仅1行):

ID | ID
-------
1  | 1

我的预期输出如下(2行,通过列出所有主题优先):

a.ID | b.ID
-------------
1    | MATCHED - OK - TAKE IT!!!
2    | NULL or what,ever...

我该怎么做?

使用左外联接:

SELECT 
  a.id, b.id
FROM 
  topic a
LEFT JOIN (
 SELECT 
  b.id,b.topicid
 FROM 
  mytask b
) b on (b.topicid=a.id)

并将查询简化为

SELECT 
  a.id, b.id
FROM 
  topic a
LEFT JOIN 
  mytask b ON b.topicid = a.id