c#
  • sql
  • sql-server
  • 2011-08-02 34 views 1 likes 
    1

    以下是需要完成的操作: SQL Server中的不同表匹配2個字段(已完成),更新table1中的字段where table1.field1 = table2.field2(的問題,它只是更新表中的所有記錄)只更新兩個表的CROSS JOIN中字段值匹配的行(SQL)

    這裏是我有,其中tempTableName是導入到SQL Server進行查詢的目的表:

    "UPDATE Table1 SET Table1.fieldN ='" + DateTime.Now.DayOfYear + "' FROM " + tempTableName + " CROSS JOIN Table1 WHERE (" + tempTableName + ".fieldX = Table1.fieldY)"

    以下是我想到的:

    一切後,FROM是無用的,只要實際的功能而言,它運行的查詢,但在任何方式的結果不是「掛鉤」實際UPDATE聲明

    綜上所述:

    查詢我已經計算出更新table1中的所有記錄,我需要查詢以僅更新查詢後匹配的行。FROM

    PS。請原諒我,如果這看起來微不足道,而且我還沒有做過研究,但事實是2周前我從來沒有聽說過SQL,並且嚴重依賴於SO來提供指導和建議。

    回答

    2

    您的CROSS JOIN應改爲INNER JOIN

    "UPDATE t1 
        SET fieldN ='" + DateTime.Now.DayOfYear + "' 
        FROM " + tempTableName + " t2 INNER JOIN Table1 t1 ON t1.fieldy = t2.fieldx" 
    
    +0

    非常感謝喬,測試我輸入 – Dani

    +0

    再次感謝,這與什麼雖然呢? [Inner Join vs Cross Join](http://stackoverflow.com/questions/670980/performance-of-inner-join-compared-to-cross-join) – Dani

    +1

    你引用的例子是'SELECT'語句。我不相信這種行爲會轉化爲「UPDATE」語句。無論如何,顯式的'INNER JOIN'是兩種情況下最好的方式。 –

    相關問題