【问题标题】:TSQL Outer JOIN : Incorrect syntax near SELECTTSQL Outer JOIN:SELECT 附近的语法不正确
【发布时间】:2019-06-02 21:02:22
【问题描述】:

以下 TSQL 脚本向我抛出错误“SELECT 附近的语法不正确”。请提出建议。

    CREATE TABLE segments
    WITH(DISTRIBUTION =HASH(customer_key)) AS
    SELECT a.* 
    FROM t_segx a
    FULL OUTER JOIN 
    SELECT b.*
    FROM t.segy b
    ON a.c_key = b.c_key

【问题讨论】:

  • Afaik sql server 不支持create table as 语法。
  • @HoneyBadger OP 没有说明他们正在使用什么系统。
  • @Outman...tsql 被其他 dbms 使用?
  • 糟糕,是的,我刚刚看到了明显的外部连接问题并做出了回应。这个问题有点不清楚到底需要什么。
  • CTAS 受 Azure SQL 数据仓库支持。不确定微软是否称该方言为 TSQL 或其他名称

标签: sql tsql


【解决方案1】:

你想要的可能是:

SELECT a.* 
INTO segments
FROM t_segx a
FULL OUTER JOIN 
SELECT b.*
FROM t.segy b
ON a.c_key = b.c_key

这将从选择查询创建表。

或者更好

SELECT a.* 
INTO segments
FROM t_segx a
FULL OUTER JOIN 
t.segy b
ON a.c_key = b.c_key

t.sgy 看起来很奇怪。

【讨论】:

    【解决方案2】:

    你需要完全外部加入某事,你只是有另一个选择。比如:

    CREATE TABLE segments
    WITH(DISTRIBUTION =HASH(customer_key)) AS
    SELECT * 
    FROM t_segx a
    FULL OUTER JOIN t.segy  b
    ON a.c_key = b.c_key
    

    应该可以。 错误,至少只要这些表名是正确的。我怀疑应该是:

    FULL OUTER JOIN t_segy 
    

    什么的。

    尽管正如其中一位评论者所提到的,如果这是 SQLServer 的 TSQL,那么您需要使用 select into tablename 来代替。如果您想要一个有效的答案,我认为您需要更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 2015-12-12
      • 2013-12-16
      • 1970-01-01
      • 2018-08-14
      • 2011-03-11
      • 2014-02-16
      相关资源
      最近更新 更多