JOIN和ON子句(NULL值)

时间:2013-04-04 13:00:57

标签: php mysql join

我有两张桌子

tableA (id,randomNumber) (2,1),(3,5),(3,2),(6,0),(8,0),...
tableB (id,randomNumber2) (0,2),(1,3),(2,0),(4,2)...

现在我想从两个表中获取id,randomnumber和randomnumber2,其中ID为IN(0,1,2,3)。

所以应该返回:

(2,1), (3,5), (3,2), (0,2), (1,3), (2,0) 

我尝试使用JOIN和LEFT JOIN构建。

问题是当ON子句(a.id = b.id上的JOIN tableB b)不为true时,它为id返回NULL。但我还需要知道NULL值。例如,对于tableB,它将为第一个结果返回(NULL,2)。

(2,1), (3,5), (3,2), (NULL,2), (NULL,3), (2,0) 

如果我使用别的东西,我怎么能得到NULL值?

2 个答案:

答案 0 :(得分:3)

当表有相关数据时,使用

JOIN。这里,2个表彼此无关。更好的选择是使用UNION

SELECT id, randomNumber
FROM tableA
WHERE ID IN (0,1,2,3)

UNION ALL

SELECT id, randomNumber2
FROM tableB
WHERE ID IN (0,1,2,3)

或者,只需使用2个单独的查询并合并结果。

答案 1 :(得分:1)

您可以将UNION与子查询一起使用:

SELECT id, rn
FROM (
    SELECT Id, randomNumber rn
    FROM tableA
    UNION
    SELECT Id, randomNumber2
    FROM tableB
) t
WHERE id IN (0,1,2,3)

如果您想要重复值,可能需要使用UNION ALL