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

我有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中的外键引用列。

最佳答案

一种方法是两个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;

关于mysql - 根据列值组合来自不同表的mysql语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31374119/

10-14 03:45