我有三张桌子
表-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 才能获得社区。如何完成? 请帮帮我。谢谢你!
答案 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
。如果任一表中没有匹配项,则使用空格。