【问题标题】:Insert Into Table using Where Clause使用 Where 子句插入表格
【发布时间】:2017-08-08 18:42:14
【问题描述】:

上下文

我正在使用 SQL Server Express 来跟踪进出操作。我有两张桌子(table1,table2)。 Table1 包含 ID 和 startTime 键,而 Table2 包含 ID、startTime 和 endTime。

每当输入一个条目时,都会在 Table1 中填充一行,其中包含所有键。然后将这些键插入到 Table2 中。

问题

我遇到的问题是我希望它识别 ID 是否已存在于 Table2 中 - 如果存在,则更新该 ID 的行而不是创建新行。

当前工作

IF(COUNT(DISTINCT ID) > 1    --When ID has been seen more than once?
   INSERT INTO Table2(ID, startTime)
   SELECT ID, CURRENT_TIMESTAMP
   FROM Table1
   WHERE ID = Table2.PTID

ELSE
   INSERT INTO Table2(ID, startTime)
   SELECT ID, CURRENT_TIMESTAMP
   FROM Table1

提前感谢您的帮助!对 SQL 有点陌生,如果我能做些什么来改进我的问题,请告诉我。

【问题讨论】:

标签: sql stored-procedures ssms sql-insert


【解决方案1】:

这样的事情怎么样?

IF EXISTS (SELECT ID FROM Table2)
   Update Table2
   SET Table2.CURRENT_TIMESTAMP = Table1.CURRENT_TIMESTAMP  --However you want to update
   FROM Table2 tab2
   JOIN Table1 tab1 on Table1.ID = Table2.PTID
ELSE
   INSERT INTO Table2(ID, startTime)
   SELECT ID, CURRENT_TIMESTAMP
   FROM Table1

【讨论】:

  • 感谢您的快速回复!似乎代码可以工作我只是在 SET CURRENT_TIMESTAMP 行出现错误,阻止它运行。它说“关键字当前时间戳附近的语法不正确”。
  • 对第 3 行做了一个小修改 - 我没有指定我们正在更新的 table.field。
  • 感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多