两张表,tmpxls和Sheet1表,我根据tmpxls查询出sheet1表中的相关记录,
现在我想知道表A即tmpxls表中哪些数据没查询到,(以便检查数据,查不到是输错了,还是什么原因)要如何改语句,能在查得结果时也显示未查到的数据为空白吗?
这个能做吗
原查询语句如下
SELECT b.*
FROM tmpXls AS a, Sheet1 AS b
WHERE Right("000" & a.一级编号,3)=b.一级编号 And Right("00" & a.二级编号2,2)=b.二级编号2 And IIf(Instr(a.三级编号,"(")>0,b.三级编号 Like "*"+Mid(a.三级编号,1,Instr(a.三级编号,"(")-1)+"*",Right("000" & a.三级编号,3)=b.三级编号);
[attach]45612[/attach]
列数相等,不是指“需要比较的字段”(我想你这句是指对比的条件,WHERE语句后的)。
我试了下,应当是sql语句显示的字段要相等,即SELECT 。。。FROM中间的字段数要一致 作者: todaynew 时间: 2011-5-23 16:03
和两个表的字段数量没什么关系,只要能构成如下情形就行:
select * from A
where exists (select * from B where B.f1=A.f4 and B.f3=A.f2.....)作者: sblisb 时间: 2011-5-23 17:57
todaynew 发表于 2011-5-23 16:03
和两个表的字段数量没什么关系,只要能构成如下情形就行:
select * from A
where exists (select * fro ...
不明白,
如下
SELECT b.*
FROM tmpXls3 AS a, Sheet1 AS b
WHERE Right("000" & a.一级编号,3)=b.一级编号 And Right("00" & a.二级编号2,2)=b.二级编号2 And IIf(Instr(a.三级编号,"(")>0,b.三级编号 Like "*"+Mid(a.三级编号,1,Instr(a.三级编号,"(")-1)+"*",Right("000" & a.三级编号,3)=b.三级编号)
UNION
SELECT tmpXls3.一级编号, tmpXls3.二级编号2
FROM tmpXls3
WHERE NOT Exists(select * from Sheet1 where Sheet1.一级编号 = Right("000" & tmpXls3.一级编号, 3) And Sheet1.二级编号2 = Right("00" & tmpXls3.二级编号2, 2) And Sheet1.三级编号 = IIf(InStr(tmpXls3.三级编号, "(") > 0, Sheet1.三级编号 Like "*" + Mid(tmpXls3.三级编号, 1, InStr(tmpXls3.三级编号, "(") - 1) + "*", Right("000" & tmpXls3.三级编号, 3)) And True);
红字部分字段数不一致能用? 作者: todaynew 时间: 2011-5-23 19:30 本帖最后由 todaynew 于 2011-5-23 19:31 编辑
sblisb 发表于 2011-5-23 17:57
不明白,
如下
SELECT b.*
这是另外的问题吧?
这个查询是否能成立:
SELECT b.*
FROM tmpXls3 AS a, Sheet1 AS b
UNION
SELECT tmpXls3.一级编号, tmpXls3.二级编号2
FROM tmpXls3