【发布时间】:2020-04-06 07:31:03
【问题描述】:
我对通过 VBA ADODB 连接的 SQL 查询感到困惑。请帮助找出我在查询中遗漏的内容...
我有两个表,TABLE_A 和 TABLE_B,它们都有 ID 和 CODE 列包含如下数据:
A_ID contains data like, 'abcdefgh';
B_ID contains data like, 'ijabcdefgh';
A_CODE contains data like 'klmstuij' or 'kl-mstuij';
B_CODE contains data like 'klmstu'.
然后我有一个这样的查询,
strSQL = "SELECT * " & _
"FROM TABLE_A a " & _
"LEFT JOIN TABLE_B b ON ((a.[A_ID]=RIGHT(b.[B_ID],8)) AND (LEFT(REPLACE(a.[A_CODE],'-',''),6)=b.[B_CODE]))"
执行此查询时出现错误,提示:
运行时错误'-2147217887(80040e21)',在备忘录、OLE 或超链接对象中
((a.[A_ID]=RIGHT(b.[B_ID],8)) AND (LEFT(REPLACE(a.[A_CODE],'-',''),6)=b.[B_CODE] )) 不能合并。
我已经尝试在 LEFT JOIN 中使用一个条件进行查询,它可以正常工作,查询如下:
strSQL = "SELECT * " & _
"FROM TABLE_A a " & _
"LEFT JOIN TABLE_B b ON (a.[A_ID]=RIGHT(b.[B_ID],8))"
然后我尝试在没有字符串事务的 LEFT JOIN 中再添加一个条件,但失败并出现同样的错误:
strSQL = "SELECT * " & _
"FROM TABLE_A a " & _
"LEFT JOIN TABLE_B b ON ((a.[A_ID]=RIGHT(b.[B_ID],8)) AND (a.[A_CODE]=b.[B_CODE]))"
我是否遗漏了查询中的任何内容?
【问题讨论】: