以不同的条件加入两次表

时间:2014-02-14 09:37:24

标签: mysql sql join

我对这个mysql查询有问题:

表格组

--------------
ID      group
--------------
50      gr1    
51      gr2    
120     gr3    
121     gr4
--------------

表格rel_group

---------------------------
ID      id_oth    type_rel
--------------------------- 
50      120         1    
50      121         1    
51      50          2
---------------------------

我需要得到行的结果(特别是'group.group'和'rel_group.type_rel'),其中数字50在ID列或id_oth上(都在查看rel_group表)。我对这些查询得到了一些部分结果:

SELECT group.group, a.type_rel
FROM group
INNER JOIN rel_group a ON ( group.ID = a.id_oth )
WHERE a.ID = 50    

SELECT group.group, b.type_rel
FROM group
INNER JOIN rel_group b ON ( group.ID = b.ID )
WHERE b.id_oth = 50

但如果我将两个查询合并为一个,结果总是为0行。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:1)

由于您从两个查询中分别获取输出,请使用 UNION ALL 作为

加入它们
SELECT Table1.group, a.type_rel
FROM Table1
INNER JOIN rel_group a ON ( Table1.ID = a.id_oth )
WHERE a.ID = 50   
union all
SELECT Table1.group, b.type_rel
FROM Table1
INNER JOIN rel_group b ON ( Table1.ID = b.ID )
WHERE b.id_oth = 50;

sqlfiddle

答案 1 :(得分:0)

你可以使用和OR条件

SELECT group.group, a.type_rel
FROM group
JOIN rel_group a ON ( group.ID = a.id_oth )
WHERE a.ID = 50 OR a.id_oth = 50