我有两张桌子
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值?
答案 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
。