我有一张看起来像的桌子
Items
:
id index
1 45
1 50
2 25
2 45
我正在写一个查询
从items
中选择所有行。我需要用它的描述替换索引。
Id 1表示table_a,id 2表示table_b。
表-A
index description
45 'ddd'
50 'fff'
表-B
index description
25 'AAA'
45 'BBB'
意思是我需要加入索引,但取决于id。
类似的东西:
Select id,index,description
from items
join table_A,table_B using (index)
我想得到的是:
id index description
1 45 'ddd'
1 50 'fff'
2 25 'AAA'
2 45 'BBB'
如何通过1加入来做到这一点?
答案 0 :(得分:2)
你需要UNION Table_A&首先是Table_B,然后使用Items连接如下
Select id,index,T.description from items
join (select 1 as id, index, description from Table_A
UNION select 2 as id, index, description from Table_B) as T
ON items.id=T.id and items.index=T.index
答案 1 :(得分:1)
假设UNION不算作连接,那么:
SELECT i.id, i.index, u.description
FROM Items AS i
JOIN (SELECT 1 AS id, index, description FROM Table_A
UNION
SELECT 2 AS id, index, description FROM Table_B
) AS u
ON u.id = i.id AND i.index = u.index;
答案 2 :(得分:0)
您可以在不使用单个连接语句的情况下执行此操作。
select a.id_,a.indx,
decode(a.id_,1,(select description from table_a where indx=a.indx),
2,(select description from table_b where indx=a.indx)) description
from item a
它将提供所需的输出。但我认为indx=a.indx
将充当反连接(隐式连接的类型)。
在解码中的每次迭代中,如何只执行一个select语句。 所以一次只能加入一个。
如果我错了,请告诉我。