2017-11-02 7 views
0

こんにちは私はのは、テーブルのスケジュールとテーブルの予定と呼んましょう 2つのテーブルを持っている削除親行の場合、一致、子行で見つかったMySQLのUNION

スケジュール表:

+----+ 
| id | 
+----+ 
| 3 | 
| 42 | 
+----+ 

予定表:

+----+-------------+ 
| id | schedule_id | 
+----+-------------+ 
| 1 |   0 | 
| 2 |   42 | 
+----+-------------+ 

私はアポイントとschを取得するクエリを持っていますedulesデータベースから、それは次のようになります:

SELECT id FROM appointment 
UNION ALL 
SELECT id FROM schedule 

私はスケジュールの行が結果から削除したいのマッチングschedule_idを持って約束があります場合、私は、すべてのスケジュールや予定を取得したい

最終的な結果は、私はそのクエリを作成するために何をする必要がありますどのような

+----+-------------+ 
| id | schedule_id | 
+----+-------------+ 
| 1 |   0 | 
| 2 |   42 | 
| 3 |   0 | 
+----+-------------+ 

でしょうか?

+0

'::といういここ

select a.id, a.schedule_id from appointment a union all select s.id, 0 from schedule s where not exists (select 1 from appointment a where a.id = s.id); 

+0

はい、それは正しいです – arcanine

+0

私は以下の答えがうまくいくはずだと思います。 –

答えて

1

私が示唆している:私はスケジュールの行がresults`から削除したいのマッチングschedule_idを持つ予定があるかどう

select id, schedule_id from 
    (
    select id, 0 as schedule_id from schedule 
    union 
    select id, schedule_id from appointment 
) t 
    where id not in (select distinct schedule_id from appointment); 
1

が可能です最終結果から `id = 42`で行を削除したことを意味しますか?
関連する問題