Access 2007中的SQL - 语法错误

时间:2010-07-29 18:59:27

标签: sql ms-access

我正在使用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
   );

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

(视您的具体要求而定)