【问题标题】:Syntax Error SQL Join Statement语法错误 SQL Join 语句
【发布时间】:2013-10-17 13:59:27
【问题描述】:

我有想要加入的表格。它们通过客户匹配编号和客户匹配编号相关联。我想从一个表中输入数据,然后与另一个表连接,然后显示第二个表的结果。 我的代码如下所示:

SELECT [title], 
       [customer_no], 
       [forename], 
       [surname], 
       [res_addr_1], 
       [res_addr_2], 
       [city],   
       [country], 
       [res_postcode], 
       [DOB], 
       [Home_phone_no], 
       [Mobile_phone_no] 
 FROM Customer
 LEFT JOIN Account ON cust_match_no 
      FROM Customer = customer_match_no 
      FROM Account  
 WHERE Account.account_no = '12345678';

但是,我在“=”附近不断收到错误语法错误,我不知道为什么!

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    这不是 FROM 子句的用途。 FROM 指定查询中的“主”表。 为了在 JOIN 中指定哪些表应该匹配的字段,如果有任何歧义,您需要使用表的名称或别名来限定这些字段,就像您在 WHERE 子句中所做的那样:WHERE Account.account_no = ...。在您的情况下,这似乎是不必要的,因为来自 Account 的字段被命名为 cust_match_no 而另一个是 customer_match_no,但无论如何您都可以这样改写您的查询:

    SELECT 
        [title], 
        [customer_no], 
        [forename], 
        [surname], 
        [res_addr_1], 
        [res_addr_2], 
        [city], 
        [country], 
        [res_postcode], 
        [DOB], 
        [Home_phone_no], 
        [Mobile_phone_no] 
    FROM Customer cus
    LEFT JOIN Account acc ON cus.cust_match_no = acc.customer_match_no
    WHERE acc.account_no = '12345678';
    

    同样的建议也适用于 SELECT 子句中列名不明确的情况。假设客户和帐户表中都有一个“国家”字段。然后,您应该限定这些列以消除歧义:

    SELECT
        [Customer].[Country],
        [Account].[Country]
        ....
    

    PS。请原谅我的英语

    【讨论】:

      【解决方案2】:
      SELECT [title], [customer_no], [forename], [surname],
      [res_addr_1], [res_addr_2], [city], [country], [res_postcode], 
      [DOB], [Home_phone_no], [Mobile_phone_no] FROM Customer
      LEFT JOIN Account ON 
      cust_match_no = customer_no WHERE Account.account_no = '12345678';
      

      【讨论】:

        【解决方案3】:
                 SELECT [title], [customer_no], [forename], [surname], [res_addr_1], [res_addr_2], 
        [city],   [country], [res_postcode], [DOB], [Home_phone_no], [Mobile_phone_no] FROM Customer
        LEFT JOIN Account ON Account.cust_match_no = Customer.customer_match_no 
        WHERE Account.account_no = '12345678';
        

        【讨论】:

          【解决方案4】:

          试试这样:

          SELECT [title], 
             [customer_no], 
             [forename], 
             [surname], 
             [res_addr_1], 
             [res_addr_2], 
             [city],   
             [country], 
             [res_postcode], 
             [DOB], 
             [Home_phone_no], 
             [Mobile_phone_no] 
          FROM Customer
          LEFT JOIN Account ON cust_match_no = customer_match_no    
          WHERE Account.account_no = '12345678';  
          

          【讨论】:

            【解决方案5】:

            试试这样:

            SELECT 
                [title],
                [customer_no], 
                [forename], 
                [surname], 
                [res_addr_1], 
                [res_addr_2], 
                [city], 
                [country], 
                [res_postcode], 
                [DOB], 
                [Home_phone_no], 
                [Mobile_phone_no] 
            FROM 
                Customer 
            LEFT JOIN 
                Account 
            ON 
                cust_match_no = customer_match_no 
            WHERE 
                Account.account_no = '12345678'
            

            【讨论】:

              猜你喜欢
              • 2013-06-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-05-04
              • 1970-01-01
              • 2015-01-30
              • 2016-04-10
              • 1970-01-01
              相关资源
              最近更新 更多