【问题标题】:SQL in Access 2007 - Syntax errorAccess 2007 中的 SQL - 语法错误
【发布时间】:2010-07-29 18:59:26
【问题描述】:

我正在使用 Access 2007 创建一个 SQL 查询来连接两个表。我能够做到这一点,但是我没有第二个表中的列为 NULL 的行;我只有在第二个表中有匹配信息的行。我试图做一个 LEFT JOIN 但 Access 不喜欢这样。相反,我试图为我的查询创建一个更好的“加入/开启”(见下文),但现在我收到“FROM 子句中的语法错误”。你知道我做错了什么吗?

SELECT *
FROM dbo_table1 AS t1
JOIN dbo_table2 AS t2
ON (
     (t1.id = t2.id)   // where the two ids match so the info in table 2 match with table 1
     OR 
     ((SELECT COUNT(*) FROM dbo_table2 AS t3 WHERE t1.id = t3.id)=0)  // there is no match but I want the row with NULL for the values from the second table
   );

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    如果您想要 dbo_table1 中的所有行,无论 dbo_table2 中是否存在匹配行,请使用 LEFT JOIN。访问应该接受这个:

    SELECT *
    FROM
        dbo_table1 AS t1
        LEFT JOIN dbo_table2 AS t2
        ON t1.id = t2.id;
    

    【讨论】:

      【解决方案2】:

      您可以使用 WHERE 语句进行外部/交叉连接(a.id=b.id 或 b.id 为空)。

      或者一个UNION,第一个都是a.id = b.id,第二个是b.id为null。

      (取决于您的具体要求)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多