Postgresql Update语句

时间:2016-01-20 08:15:41

标签: postgresql sql-update

我目前正在使用2张桌子:一张是直播,一张是第一阶段。上面的代码使用临时表作为源更新实时表中的值。如果舞台表中的行已经存在于实时表和其他一些简单标准中,它只会更新“firstname”列中的值。

Update LiveTable
    SET LiveTable.firstname = TestTable.firstname
FROM TestTable
    WHERE EXISTS (SELECT 1 FROM LiveTable WHERE LiveTable.userid = TestTable.userid)
    AND TestTable.firstname IS NOT NULL
    AND LEN(TestTable.firstname) > len(LiveTable.firstname);

以上代码可以完成工作,但需要相当长的时间。我想知道是否有更快的方法来做到这一点。

我尝试创建FUNCTION来做同样的事情,但却无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

使用两个表之间的连接

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="left-menu">
  <span class="glyphicon"></span>
  <div id="map-menu" class="test">
    <nav class="menu_content">
      <ul>
        <li>Link</li>
        <li>Link</li>
        <li>Link</li>
        <li>Link</li>
      </ul>
    </nav>
  </div>
</div>

实际上并不需要条件Update LiveTable SET LiveTable.firstname = TestTable.firstname FROM TestTable WHERE LiveTable.userid = TestTable.userid AND TestTable.firstname IS NOT NULL AND length(TestTable.firstname) > len(LiveTable.firstname); ,因为TestTable.firstname IS NOT NULL会过滤掉length(TestTable.firstname) > len(LiveTable.firstname)为空的行。它应该是firstname而不是length()