1

我有两张桌子

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)不正确时,它会为 id 返回 NULL。但我还需要知道 NULL 值。例如,对于 tableB,它会为第一个结果返回 (NULL,2)。

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

我怎样才能获得 NULL 值,我应该使用其他东西吗?

4

2 回答 2

3

JOIN当表有相关数据时使用 s。在这里,两张桌子彼此无关。更好的选择是使用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 个单独的查询并组合结果。

于 2013-04-04T13:51:21.613 回答
1

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

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如果您想要重复值,您可能需要使用 a 。

于 2013-04-04T13:03:40.203 回答