根据列值

时间:2015-07-13 00:59:56

标签: mysql database stored-procedures case

我需要有关如何最好地处理这种情况的帮助。

我有3张桌子,比如A,B,C。

表A的列categoryID有G(好)或B(坏)。

  • 如果A中的categoryID为G,则该行的信息位于表B中。
  • 如果categoryID为B,则该行的信息位于C。

例如,如果我在表A中有2条记录。

对于第一条记录,categoryID是G.我需要从表B获取第一条记录的数据。

对于第二条记录,categoryID为B,我需要从表C中获取第二条记录的数据。

我正在使用MySQL程序。我试过用案例,但似乎没有用。

我想在一个程序中实现这一目标。表B和C具有表A中的外键引用列。

1 个答案:

答案 0 :(得分:0)

一种方法是两个left join。你的问题在列名实际上有点模糊,但方法是这样的:

select a.*, coalesce(b.col1, c.col1) as col1, coalesce(b.col2, c.col2) as col2
from a left join
     b
     on a.categoryId = 'G' and a.bid = b.bid left join
     c
     on a.categoryid = 'B' and a.cid = c.cid;