Mysql查询在不同的表中搜索相同的列

时间:2015-06-15 06:46:16

标签: mysql

我有三张桌子

表-A

 ╔════╦══════╗
 ║ Id ║ MID  ║
 ╠════╬══════╣
 ║  1 ║ 5996 ║
 ║  2 ║  148 ║
 ║  3 ║  101 ║
 ║  4 ║ 5636 ║
 ║  5 ║  143 ║
 ║  6 ║  101 ║
 ║  7 ║  959 ║
 ║  8 ║  148 ║
 ╚════╩══════╝

表-B

 ╔════╦══════════════╦══════╗
 ║ Id ║  Community   ║ MID  ║
 ╠════╬══════════════╬══════╣
 ║  1 ║ Jeff Atwood  ║ 5636 ║
 ║  2 ║ Geoff Dalgas ║  148 ║
 ║  3 ║ Neal  Marley ║  101 ║
 ║  4 ║ Joel Spolsky ║  959 ║
 ╚════╩══════════════╩══════╝

table_c

 ╔════╦══════════════╦══════╗
 ║ Id ║  Community   ║ MID  ║
 ╠════╬══════════════╬══════╣
 ║  1 ║ Jim Atwood   ║ 3212 ║
 ║  2 ║ Rim  Dalgas  ║  428 ║
 ║  3 ║ Jarrod Dixon ║  388 ║
 ║  4 ║ Noel Spolsky ║  339 ║
 ╚════╩══════════════╩══════╝

我只能使用普通的Mysql查询。 我需要加入 table_a table_b 来查找社区,如果没有社区对应< tablea 中的strong> MID 我需要加入 table_c 才能获得社区。如何完成? 请帮帮我。谢谢你!

1 个答案:

答案 0 :(得分:1)

您可以对这两个表使用LEFT JOIN,然后使用COALESCE选择第一个现有项目:

SELECT a.Id, a.MID, COALESCE(b.Community, c.Community, '') as Community
FROM table_a a 
    LEFT JOIN table_b b ON a.MID = b.MID
    LEFT JOIN table_c c ON a.MID = c.MID

在这种情况下,如果您在table_b中有匹配的数据,则会使用b.Community,否则如果table_c中存在匹配的数据,则会使用c.Community。如果任一表中没有匹配项,则使用空格。