none
SQLITE3不同TABLE相同列之合併,且不會覆蓋原有資料的方法 RRS feed

  • 問題

  • 我使用DB Browser 副檔名為sqlite3

    我有2個TABLE

    TABLE A  有N個列 N個欄

    內容資料  : 
    (編號)    (ID)              (korean)(english)                (日期)        

    95823    StrSheet_TalkBox_id_9630     출석      check in       2019/05/02

    95824    StrSheet_TalkBox_id_9631  요리학   cooking         2019/05/02

    95825    StrSheet_TalkBox_id_9632     펠디그               2019/05/02

    TABLE B  跟TABLE A 是相同表單

    (編號)    (ID)              (korean)(english)                (日期)        

    95823    StrSheet_TalkBox_id_9630     출석      check in       2019/05/02

    95824    StrSheet_TalkBox_id_9631  삼나무   cook               2019/05/02

    95825    StrSheet_TalkBox_id_9632     펠디그   Feldigg        2019/05/02

                              

    我想將TABLE B 加入TABLE A 合併,

    並且,在TABLE B 的某欄資料遇到TABLE A 某欄已經有資料時不套用或覆蓋 .產生的內容如下:

    (編號)    (ID)              (korean)(english)                (日期)        

    95823    StrSheet_TalkBox_id_9630     출석      check in       2019/05/02

    95824    StrSheet_TalkBox_id_9631  삼나무   cooking         2019/05/02

    95825    StrSheet_TalkBox_id_9632     펠디그   Feldigg        2019/05/02



    如果使用:

    update Strings
    set english = coalesce (english,NULL)
    from Strings
    where english is NULL

    會出現以下錯誤訊息:

    Result: near "from": syntax error
    At line 1:
    update Strings
    set english = coalesce (english,NULL)
    from

    或是使用以下語法皆不會套用:

    UPDATE Strings
    SET english = (SELECT english
                  FROM Strings
                  WHERE (Strings.english = Strings.english))
    WHERE EXISTS (SELECT english
                  FROM Strings
                  WHERE (Strings.english = Strings.english));

    UPDATE strings
    SET english =
        (SELECT english
         FROM strings_2
         WHERE (strings.english) = (strings_2.english))
    WHERE (english) IN (SELECT english FROM strings_2);

    甚至使用:

    UPDATE strings
    SET korean =
        (SELECT  korean
         FROM strings_2
         WHERE (strings.english) = (strings_2.english))
    WHERE (english) IN (SELECT english FROM strings_2);

    會將korean那一列都變成同一個數值。

    以上方法皆無法達到我想要的效果,想問是哪裡出問題了?


    • 已編輯 scott8879 2019年5月14日 下午 10:41
    2019年5月9日 上午 09:49

所有回覆

  • You sure you have sql server? Which version and edition of sql server?
    2019年5月9日 下午 01:31
  • I use DB Browser to edit my DB file
    2019年5月12日 下午 05:32
  • 這裡是 SQL Server 討論區,非 SQLite 討論區。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年5月13日 下午 03:02
  • 或許您沒有認真看過我的敘述,又或者針對我的問題無法在您腦中產生正確解答,

    不過沒關係,希望您這一段言論可以為您現實的生活帶來一點溫暖。

    期許您,鵬程萬里,心想事成。

    2019年5月14日 下午 10:33