0

所以我试图在我的数据库中找到在特定列具有相同值的两个 ID,即

SELECT SALARY FROM TABLE1 WHERE ID='1'
INTERSECT
SELECT SALARY FROM TABLE2 WHERE ID='5'

所以我在VS2010中做了

Dim ConnectionString As String
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\\;Extended Properties=dBase  IV"
Dim dBaseConnection As New System.Data.OleDb.OleDbConnection(ConnectionString)
dBaseConnection.Open()
Dim myQ As String = "SELECT 'SALARY' FROM TABLE1 WHERE ID='1' INTERSECT SELECT 'SALARY' FROM TABLE2 WHERE ID='5'"
Dim dBaseCommand As New System.Data.OleDb.OleDbCommand(myQ, dBaseConnection)
Dim dBaseDataReader As System.Data.OleDb.OleDbDataReader = dBaseCommand.ExecuteReader(CommandBehavior.SequentialAccess)

执行最后一行时出现此错误

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常
附加信息:IErrorInfo.GetDescription 失败,出现 E_FAIL(0x80004005)。

难以置信,当我使用 UNION 而不是 INTERSECT 作品时

任何想法,谢谢

4

2 回答 2

2

看起来好像您正在为 dBase IV 文件使用 Microsoft JET 提供程序。dBase 和 Microsoft Jet 不支持 intersect 命令。

于 2013-02-05T23:41:21.850 回答
0

我并没有完全回答您的问题以解决您的错误,但无论如何这可能是您尝试做的事情的解决方法。

您可以使用以下查询,而不是使用 intersect:

select salary
from Table1 inner join Table2 on Table1.Salary = Table2.Salary
where Table1.Id = '1' and Table2.Id = '5'
于 2013-02-05T23:43:56.653 回答