从同一个表中选择但不同的列

时间:2014-05-26 15:45:49

标签: sql sql-server select inner-join

我的表格看起来像

from_type, from_id, to_type, to_id A 12 B 15 B 15 C 16  我试过

select  A.FROM_TYPE,A. FROM_ID, B.TO_TYPE, B.TO_ID 
from  ITEM_LINK A   JOIN( select FROM_TYPE, FROM_ID, TO_TYPE, TO_ID 
                               from table
                              WHERE FROM_TYPE = 'B' and TO_ITEM_TYPE ='C')
  B ON A.TO_TYPE =B.FROM_TYPE
  where A.FROM_TYPE = 'A' and A.TO_TYPE ='B' 

但是这个查询不能正常工作,作为这个查询的答案我想要

from_type, from_id, to_type, to_id A 12 C 16 我不需要B回答。此查询也将由另一个查询中的FROM_ID FROM_TYPE A加入。任何想法如何构建此查询?

我的回答是不正确的,因为它向我展示了类似的东西

from_type, from_id, to_type, to_id A 12 C 16 A 12 C 17 A 12 C 18 这是不正确的,因为TYPE A只能连接到一个TYPE C

1 个答案:

答案 0 :(得分:1)

试试这个

  select t1.`from_type`, t1.`from_id`, t2.`to_type`, t2.`to_id` from Table1 t1
   inner join table1 t2
   On t1.`to_type` = t2.`from_type`
   and t1.`to_id` = t2.`from_id`

DEMO HERE

抱歉没有看到它的sql server

试试

  select t1.[from_type], t1.[from_id], t2.[to_type], t2.[to_id] from Table1 t1
  inner join table1 t2
  On t1.[to_type] = t2.[from_type]
  and t1.[to_id] = t2.[from_id]

DEMO for sqlserver