SQL匹配两个表

时间:2013-07-08 11:11:02

标签: mysql sql mach

我有两张桌子。

表1

  • 已计算约2700行
  • Colums:ID,NO,NAME

表2:

  • 有大约300行
  • Colums:ID,NAME

其中:

Table1.NO = Table2.ID

我想列出Table1(2700行),但如果Table1不包含Table2的某些行,我想写“NA”

我怎么能用SQL做到这一点?

2 个答案:

答案 0 :(得分:1)

尝试LEFT JOINISNULL功能,如下所示

SELECT ISNULL(Table1.Name,'NA')
FROM Table1
LEFT JOIN Table2
ON   Table1.NO = Table2.ID

答案 1 :(得分:1)

我假设您要从table2输出Name,如果它存在,在这种情况下:

SELECT 
    a.id,
    isnull(b.name, 'NA'),
    a.name
FROM
    table1 a
LEFT JOIN
    table2 b
    ON
    a.no = b.id

会为你做(我也从table1输出id和name)。

修改

道歉,在我发布之前,我没有看到MySQL标签。如果coalesce,则需要使用isnull函数,如下所示:

SELECT 
    a.id,
    coalesce(b.name, 'NA'),
    a.name
FROM
    table1 a
LEFT JOIN
    table2 b
    ON
    a.no = b.id