iT邦幫忙

0

SQL 選取兩個不同欄位的不同表當做判斷依據,如果都存在就新增,如果不存在應該如何定義返回值

  • 分享至 

  • xImage

各位前輩大家好
在撰寫程式的時候遇到一個不曾想過的問題,可能有點淺還請大家見諒

目前要做的事情是:
要在兩張不同資料表(表A、表B),確認兩個不同欄位(ID_A、ID_B)是否「同時」存在
如果同時存在,就新增一筆資料到表C
如果其中一個欄位不存在,就不新增
→ 可以在判斷不存在的時候就回傳指定值說是哪一個欄位不存在嗎?
我會在C#內把這個直接起來串成錯誤訊息

有試過if exists 跟 is null的組合,但總無法排列正確

再請各位提示、解答
謝謝!

rogeryao iT邦超人 7 級 ‧ 2022-02-15 19:37:23 檢舉
請參考 : https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=646f6ace0def405dd1568beda09f2f1e
建立模擬的資料
天黑 iT邦研究生 5 級 ‧ 2022-02-16 09:48:44 檢舉
描述很抽象 有PK嗎 還是FK ? 樓上大大的網站是好物!!! 先收下 感恩
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-02-16 09:59:30

什麼樣的問題,就會有什麼樣的答案

create table A (id varchar(03));
create table B (id varchar(03));
create table C (id varchar(03));

insert into A values ('A01');
insert into A values ('A02');
insert into A values ('I01');
insert into A values ('I02');

insert into B values ('B01');
insert into B values ('B02');
insert into B values ('B03');
insert into B values ('I01');
insert into B values ('I02');
INSERT INTO C SELECT A.* FROM A,B WHERE A.ID=B.ID;

SELECT * FROM C;

SELECT * FROM A WHERE A.ID NOT IN (SELECT * FROM B)
UNION
SELECT * FROM B WHERE B.ID NOT IN (SELECT * FROM A)

我要發表回答

立即登入回答