我有这样的表:

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

我做错了什么?

===============>>#1 票数: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

===============>>#2 票数: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

在此处查看演示http://sqlfiddle.com/#!2/c7066/6

===============>>#3 票数:0

通过使用子句WHERE T1.TIPO = 1 AND T2.TIPO = 2 ,则需要一个匹配记录被发现在T2 ,因此在现实中你正在转向的left joininner join

为了包括记录T1是在没有匹配的记录T2 ,您可以更改where条款要么

WHERE T1.TIPO = 1 AND (T2.TIPO IS NULL OR T2.TIPO = 2)

要么

WHERE T1.TIPO = 1 AND T2.TIPO <> 1  

  ask by Osmar Malheiros translate from so

未解决问题?本站智能推荐:

1回复

如果然后加入其他加入

我试图找出一个连接几个表的查询(cca 8)。 有一次,我需要加入两个表中的一个。 所以让我们调用结果直到这一点A.现在我想加入B或C.当我使用B时,我得到的结果更小,或者没有结果。 如果在连接后没有结果,我需要加入C。 总结一下,(A,C)的交点给出了更大的结果,如果(A,B)的交
2回复

加入1 = 1与交叉加入

我正在将postgresql中的一个大表连接到一个包含1行的表中。 是的,我知道我可以从这个单行表中获取值并将它们写入我的查询中,但是有210列。 所以我的问题是这样的:我应该使用交叉连接或在重言式上使用常规连接(1 = 1或其他)将单行表连接到所有内容。 这些方式中的任何一种都必然会
5回复

帮助加入

任何人都可以在此代码中看到问题吗? 它不会像我想要的那样工作。 我想要它在最前面被评论的线程,以及在下一个最新被评论的线程。 echo $ thread [parentID]不回声 评论: id,评论,parentID,日期
1回复

加入Django吗?

我正在尝试在Django中创建一个应用程序,但我需要在Django中进行JOIN,如下所示: 可以获取User.name吗? 我的模特是 非常感谢您的帮助=)
3回复

加入报告

我正在尝试将3个报告合并为一个,并从每个报告中抽取一部分。 这是我的脚本,可用于其中两个报告: 并且我想从应为DALE.DBO.V_MTTA字段中添加此字段A.CREATE_DATE-O.ACTUAL_START_DATE AS ASSIGN_SECS DALE.DBO.V_MTT
2回复

加入帮助

我认为加入时需要帮助。 无法解决。 我有这些表: 帖子 帖子标签 标签 如果我想用标记team-fortress-2圈出所有帖子,那该怎么办? 我不知道。
3回复

加入职位

我有桌子baskets , fruits和basket_fruits (join-table: basket_id-fruit_id )。 我怎样才能在篮子里找回每个水果的位置,这样我就会得到类似的东西 水果位置只是返回的连接表中的一行(它不是列)。
2回复

加入问题

我在主要详细信息布局中有两个表。 我希望仅在主表和明细记录满足条件的情况下才选择它们。 但是我希望所有主表项目都不管是否存在详细记录。 我的表格如下:主-库存物品 详细信息-库存线 我的SQL 上面给出了清单项目中的所有项目以及它们与预期相关的清单行记录。
1回复

Concat加入

我正在尝试连接此表并加入另外两个表。 我的输出应包含以下列:客户全名(名字和姓氏),产品描述,订购数量。
2回复

用AND子句加入

我在使用JOIN QUERY时遇到了困难,这可能是因为我很难掌握JOIN语法。 我需要从两个都满足这两个条件的表中获取行,但是当前返回的结果就像AND条件都不存在一样。 对实现这一点有什么想法吗? 为了帮助说明背景: 所需的输出: PS:我目前可以做的与我的问题相