【问题标题】:Updating only the rows matched by field value from CROSS JOIN of 2 tables (SQL)仅更新与 2 个表的 CROSS JOIN 中的字段值匹配的行 (SQL)
【发布时间】:2011-08-02 21:15:34
【问题描述】:

以下是需要做的事情: 匹配SQL Server中不同表的2个字段(完成),更新table1中的字段,其中table1.field1 = table2.field2(问题,它只是更新表中的所有记录)

这就是我所拥有的,其中 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之后的查询匹配的行

附言。如果这看起来微不足道并且我没有做过研究,请原谅我,但事实是两周前我什至从未听说过 SQL,并且严重依赖 SO 来获得指导和建议。

【问题讨论】:

    标签: c# sql sql-server


    【解决方案1】:

    您的CROSS JOIN 应该是INNER JOIN

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

    【讨论】:

    • 再次感谢,这是怎么回事? Inner Join vs Cross Join
    • 您引用的示例是针对SELECT 语句的。我不相信这种行为会转化为UPDATE 声明。在任何情况下,明确的INNER JOIN 是任何一种情况的首选方式。
    猜你喜欢
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多