-1

さて、次のようなものを作る方法があります:

表1

id -> PK
table1_id -> FK

id | name | table1_id
1,'test',NULL
2,'test2',NULL
3,'sub_val1',1
4,'sub_val2',1

select a.name
     , b.name 
from table1 a 
left join table1 b 
   on a.id=b.table1_id 
where a.table1_id is null;

これは次のようなものを返します:

test,sub_val1
test,sub_val2
test2,NULL

次のようなものを返したいと思います:

test,NULL
test,sub_val1
test,sub_val2
test2,NULL

それを行う方法はありますか?

4

2 に答える 2

0

私は推測していますが、おそらくこれはあなたが望むものです:

select a.name as first_name
     , b.name as second_name
from table1 a 
left join table1 b 
   on a.id=b.table1_id 
where a.table1_id is null
union
select name as first_name
     , null as second_name
from table1  
where table1_id is null
order by first_name, second_name

2 番目の操作 (UNION) で 2 番目の列の定義を指定する必要がある場合があります。

于 2013-03-31T19:09:38.477 に答える
0

私の頭に浮かぶ唯一のことは次のとおりです。

select
    a.name,
    b.name
from
    table1 a
inner join
    table1 b on a.id = b.table1_id
where
    a.table1_id is null
union all
    select name, null from table1 where table1_id is null
于 2013-03-31T19:09:16.517 に答える