账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    SQL Server Update 语句简化
    28
    0

    如下T-SQL

    update tablename set 日期=e.日期,[00:00]=e.[00:00],[01:00]=e.[01:00],[02:00]=e.[02:00],[03:00]=e.[03:00],[04:00]=e.[04:00],[05:00]=e.[05:00],[06:00]=e.[06:00],[07:00]=e.[07:00],[08:00]=e.[08:00],[09:00]=e.[09:00],[10:00]=e.[10:00],[11:00]=e.[11:00],
    [12:00]=e.[12:00],[13:00]=e.[13:00],[14:00]=e.[14:00],[15:00]=e.[15:00],[16:00]=e.[16:00],[17:00]=e.[17:00],[18:00]=e.[18:00],[19:00]=e.[19:00],[20:00]=e.[20:00],[21:00]=e.[21:00],[22:00]=e.[22:00],[23:00]=e.[23:00]
    from (select * from    OPENDATASOURCE(  
             'Microsoft.Ace.OleDb.12.0',  
             'Extended Properties="Excel 12.0;HDR=YES;IMEX=1";Data Source="C:..."'  
             )...[sheet1$]  ) e where tablename.日期=e.日期

    小白向大神们请教,能有更优化的写法,谢谢!

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 想起曾經的思念 普通会员 1楼

      在SQL Server中,更新语句的简化方法通常涉及使用更新子句和一些预处理语句。以下是一些可能的简化版本:

      1. 使用 WITH 子句简化子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE condition;

      在这个简化版本中,WITH 子句包含一个 UPDATE 子句,其中包含要更新的列和新值。WHERE 子句用于筛选要更新的行。SET 子句用于设置新值,而 column1columnN 是要更新的列的名称。

      1. 使用 IN 子句简化 IN 子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE column1 IN ('new_value1', 'new_value2', 'new_value3');

      在这个简化版本中,IN 子句用于替换 WHERE 子句中的 column1 列。它接受一个值列表,每个值代表一个列的名称。

      1. 使用 EXISTS 子句简化 EXISTS 子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE EXISTS (SELECT 1 FROM other_table WHERE column1 = 'new_value1');

      在这个简化版本中,EXISTS 子句用于替换 WHERE 子句中的 column1 列。它接受一个表达式(一个子句),子句用于检查 column1 是否存在于 other_table 中。如果 column1 存在,EXISTS 子句返回 1,否则返回 0

      1. 使用 DISTINCT 子句简化 DISTINCT 子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE column1 NOT IN (SELECT DISTINCT column1 FROM other_table);

      在这个简化版本中,NOT IN 子句用于替换 WHERE 子句中的 column1 列。它接受一个表达式,子句用于检查 column1 是否在 other_table 中的 column1 列中不存在且不相同。如果 column1 不存在于 other_table 中的 column1 列中,NOT IN 子句返回 1,否则返回 0

      1. 使用 ROW_NUMBER() 函数简化 ROW_NUMBER() 函数:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE column1 IN ('new_value1', 'new_value2', 'new_value3') AND column1 NOT IN (SELECT ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2 DESC) FROM other_table);

      在这个简化版本中,ROW_NUMBER() 函数用于为 column1 列提供一个递增的标识,然后在 WHERE 子句中检查这个标识是否在 other_table 中的 column1 列中不存在且不相同。ORDER BY column2 DESC 用于根据 column2 列对 column1 列进行降序排序,以便查找的行按照 column2 列的值从高到低排序。NOT IN 子句用于检查 column1 列的值在 other_table 中的 column1 列中不存在且不相同。

      这些只是 SQL Server 更新语句简化的一些常见方法,实际上,还有许多其他方法可以使用,根据具体的需求和数据库设计来选择合适的方法。

    • 孤ジ离人群 普通会员 2楼

      在SQL Server中,更新语句的简化方法通常涉及使用更新子句和一些预处理语句。以下是一些可能的简化版本:

      1. 使用 WITH 子句简化子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE condition;

      在这个简化版本中,WITH 子句包含一个 UPDATE 子句,其中包含要更新的列和新值。WHERE 子句用于筛选要更新的行。SET 子句用于设置新值,而 column1columnN 是要更新的列的名称。

      1. 使用 IN 子句简化 IN 子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE column1 IN ('new_value1', 'new_value2', 'new_value3');

      在这个简化版本中,IN 子句用于替换 WHERE 子句中的 column1 列。它接受一个值列表,每个值代表一个列的名称。

      1. 使用 EXISTS 子句简化 EXISTS 子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE EXISTS (SELECT 1 FROM other_table WHERE column1 = 'new_value1');

      在这个简化版本中,EXISTS 子句用于替换 WHERE 子句中的 column1 列。它接受一个表达式(一个子句),子句用于检查 column1 是否存在于 other_table 中。如果 column1 存在,EXISTS 子句返回 1,否则返回 0

      1. 使用 DISTINCT 子句简化 DISTINCT 子句:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE column1 NOT IN (SELECT DISTINCT column1 FROM other_table);

      在这个简化版本中,NOT IN 子句用于替换 WHERE 子句中的 column1 列。它接受一个表达式,子句用于检查 column1 是否在 other_table 中的 column1 列中不存在且不相同。如果 column1 不存在于 other_table 中的 column1 列中,NOT IN 子句返回 1,否则返回 0

      1. 使用 ROW_NUMBER() 函数简化 ROW_NUMBER() 函数:

      sql UPDATE table_name SET column1 = 'new_value1', column2 = 'new_value2', ... columnN = 'new_valueN' WHERE column1 IN ('new_value1', 'new_value2', 'new_value3') AND column1 NOT IN (SELECT ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2 DESC) FROM other_table);

      在这个简化版本中,ROW_NUMBER() 函数用于为 column1 列提供一个递增的标识,然后在 WHERE 子句中检查这个标识是否在 other_table 中的 column1 列中不存在且不相同。ORDER BY column2 DESC 用于根据 column2 列对 column1 列进行降序排序,以便查找的行按照 column2 列的值从高到低排序。NOT IN 子句用于检查 column1 列的值在 other_table 中的 column1 列中不存在且不相同。

      这些只是 SQL Server 更新语句简化的一些常见方法,实际上,还有许多其他方法可以使用,根据具体的需求和数据库设计来选择合适的方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部