我有这样的表:
ID DADOS TIPO
1 UM 1
2 DOIS 1
3 TRES 1
4 QUATRO 1
5 CINCO 1
1 SEIS 2
我需要做一个返回此选项的选择:
t1.id t1.dados t2.dados
1 Um Seis
2 Dois Null
3 Tres Null
4 Quatro Null
5 Cinco Null
我试过这种形式:
SELECT T1.ID, T1.DADOS, T2.DADOS
FROM Tabela1 as T1 LEFT JOIN Tabela1 AS T2 ON T1.ID = T2.ID
WHERE T1.TIPO = 1 AND T2.TIPO = 2
但结果如下:
ID T1.DADOS T2.DADOS
1 UM SEIS
我做错了什么?
答案 0 :(得分:0)
将此代码用于连接表本身:
SELECT T1.ID, T1.DADOS, T2.DADOS
FROM Tabela1 as T1 LEFT JOIN Tabela1 AS T2 ON T1.ID = T2.ID
And T1.TIPO = 1 AND T2.TIPO = 2
你也可以使用这段代码:
SELECT T1.ID, T1.DADOS, T2.DADOS
FROM
( select * from Tabela1 T_1
where T_1.TIPO = 1) as T1
LEFT JOIN
(select * from Tabela1 T_2
Where T_2.TIPO = 2) AS T2 ON T1.ID = T2.ID
答案 1 :(得分:0)
这将完成工作
SELECT T1.ID, T1.DADOS as T1Dados, T2.DADOS as T2Dados
FROM Tabela1 T1
left JOIN Tabela1 T2
ON T1.ID = T2.ID
and T1.TIPO = 1 and T2.TIPO = 2
答案 2 :(得分:0)
通过使用WHERE T1.TIPO = 1 AND T2.TIPO = 2
条款,您需要在T2
中找到匹配的记录,因此实际上您将left join
转换为inner join
。< / p>
为了包含来自T1
的{{1}}中没有匹配记录的记录,您可以将T2
子句更改为
where
或
WHERE T1.TIPO = 1 AND (T2.TIPO IS NULL OR T2.TIPO = 2)