sql - SQL 中两个具有相同名称的临时表

标签 sql sql-server foxpro

我们正在将 foxpro 数据库重写为 SQL。我遇到了以下情况。 Foxpro 可以在两个不同的 if 语句下创建两个同名的游标。

我试图在 SQL 中做同样的事情。创建了两个临时表。如下所示:

IF @id = 1
BEGIN
SELECT * INTO #abc from table1
END

IF @id = 2
BEGIN
SELECT * INTO #abc frm table2
END

NEXT 在这里我写了一个代码来用另一个列更新一个临时表列的值。但是 sql 向我抛出一个错误,指出“数据库中已经有一个名为#abc 的对象”。

请问有解决办法吗?

谢谢。

最佳答案

对于您的特定用例,假设两者具有您可以使用的相同结构。

IF @id IN ( 1, 2 )
  BEGIN
      SELECT *
      INTO   #abc
      FROM   table1
      WHERE  @id = 1
      UNION ALL
      SELECT *
      FROM   table2
      WHERE  @id = 2
  END 

避免您遇到的解析器问题。我同意 Ben 的评论,尽管 FoxPro 代码的字面翻译可能会使您陷入低效且无法维护的困惑局面。

关于sql - SQL 中两个具有相同名称的临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089085/

相关文章:

mysql - 如何将数据库从 Fox Pro 迁移到 MySQL?

mysql - 在第一个表的字段或第二个表的字段中使用 WHERE 进行左连接

java - 从 Java/SQL 文件中提取 SQL 语句

SQL:列值的第一个字母的列表?

sql - 跟踪从月份开始日期开始的周间隔

csv - 批量转换visual foxpro dbf表到csv

msdn - 我在哪里可以下载 Visual Foxpro?微软?

sql - 努力思考这个数据库查询

java - Hibernate 中数据库 View 的映射和 POJO 类创建

使用连接的 SQL 减操作