我有3张桌子:
tb_a tb_b tb_c
============== ============== ==============
|id|doc1|urla| |id|doc2|urlb| |id|doc3| sum|
============== ============== ==============
| 1| c1 |url1| | 1| c2 |urla| | 1| c2 |sum1|
| 2| c3 |url3| | 2| c4 |urlb| | 2| c3 |sum3|
| 3| c2 |url2| | 3| c6 |urlc| | 3| c4 |sum4|
============== ============== | 4| c6 |sum6|
==============
首先,我想检查tb_a
和tb_b
。如果doc1
和doc2
中的数据相同,我只需使用doc1
中的数据tb_a
即可。这是第一个查询:
SELECT
a.doc1
FROM
tb_a a
LEFT JOIN
tb_b b
ON a.doc1 = b.doc2
WHERE
b.doc2 IS NULL
然后与tb_c
保持联接以获取sum
。我可以在一个查询中创建这些进程吗?怎么样?谢谢你:))
从示例中,结果必须是:
c3 url3 sum3
c2 url2 sum1
c4 urlb sum4
c6 urlc sum6
答案 0 :(得分:3)
您可以使用LEFT JOIN
COALESCE
加入所有表格。
SELECT a.doc3 DOCValue,
COALESCE(b.urla, c.urlb) AS URLValue,
a.`SUm` AS SUMValue
FROM tb_c a
LEFT JOIN tb_a b
ON a.doc3 = b.doc1
LEFT JOIN tb_b c
ON a.doc3 = c.doc2
答案 1 :(得分:0)
以下内容将返回与A,B和B中的doc匹配的所有记录。 C.我认为你所追求的是什么。
SELECT
a.doc1, C.SUM
FROM
tb_a a
LEFT JOIN
tb_b b
ON a.doc1 = b.doc2
left join TB_C C ON C.DOC3=B.DOC2
WHERE
b.doc2 IS NOT NULL