mysql vs ms-access DB上的sql查询左连接

Posted

技术标签:

【中文标题】mysql vs ms-access DB上的sql查询左连接【英文标题】:sql query left join on mysql vs ms-access DB 【发布时间】:2012-06-28 14:15:49 【问题描述】:

这个查询

SELECT * 
FROM tblContracts 
LEFT JOIN tblPartys ON tblContracts.id = tblPartys.Contract_id 
INNER JOIN tblAdministrators 
        ON tblContracts.AdministratorID = tblAdministrators.ID

适用于 mysql 数据库,但不适用于 Access DB !!!

我遇到了这个错误:

System.Data.OleDb.OleDbException:语法错误(缺少运算符) 查询表达式 'tblContracts.id = tblPartys.Contract_id INNER JOIN tblAdministrators ON tblContracts.AdministratorID = tblAdministrators.I'.在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时)在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,对象和执行结果)在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象& 执行结果)在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,对象和执行结果)在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior 行为)

【问题讨论】:

您还应该包括您对数据库执行的代码。 【参考方案1】:

尝试在第一个连接周围添加一对括号

SELECT * 
FROM (tblContracts 
LEFT JOIN tblPartys ON tblContracts.id = tblPartys.Contract_id) 
INNER JOIN tblAdministrators 
        ON tblContracts.AdministratorID = tblAdministrators.ID

【讨论】:

【参考方案2】:

根据您发布的错误,您将ON tblContracts.AdministratorID = tblAdministrators.ID 误写为ON tblContracts.AdministratorID = tblAdministrators.I,如下所述:

查询表达式“tblContracts.id = tblPartys.Contract_id INNER JOIN tblAdministrators ON tblContracts.AdministratorID = tblAdministrators.I”中有语法错误(缺少运算符)。在...

所以要保证写成ON tblContracts.AdministratorID = tblAdministrators.ID

【讨论】:

【参考方案3】:

试试这个:

  SELECT *  FROM ((tblContracts 
   LEFT JOIN tblPartys ON tblContracts.id = tblPartys.Contract_id ) 
     INNER JOIN tblAdministrators ON tblContracts.AdministratorID = tblAdministrators.ID )  

根据我的经验,Access 喜欢括号...有点太多了,如果你问我的话。

【讨论】:

以上是关于mysql vs ms-access DB上的sql查询左连接的主要内容,如果未能解决你的问题,请参考以下文章

VS Lightswitch 和 MS Access DB?

有经验的 DBA 应该使用哪种 C# 操作 ms-access 的方法?

我无法将 php 与 ms-access db 连接

如何在线获取静态 MS-Access DB 并使用 PHP 连接到它?

获取从 PHP ADO 连接返回到 MS-Access DB 的 JSON

使用 fast_executemany 写入 MS-Access DB 不起作用