我们通常使用的表之间的联接是等值联接;你的情况需要使用外联接来做。 我按照你的意思分别见了table1,table2,table0(对应你的table表),并把你的数据也增加进去了。 执行下面的SQL可能会得到你想要的结果: (selecttable1hm,table1no1,table2no2fromtable1fullouterjointable2on(table1hm=table2hm)wheretable1hmisnotnull) union (selecttable2hm,table1no1,table2no2fromtable1fullouterjointable2on(table1hm=table2hm)wheretable2hmisnotnull) 输出结果如下:
希望是你想要的! 刚才没用到table0表,如果保证hm的值必须在table0中,如要修改上面的SQL如下: selectfrom(selecttable1hmashm,table1no1,table2no2fromtable1fullouterjointable2on(table1hm=table2hm)wheretable1hmisnotnull union selecttable2hmashm,table1no1,table2no2fromtable1fullouterjointable2on(table1hm=table2hm)wheretable2hmisnotnull)astwherethmin(selecthmfromtable0) 这样,当table1,table2中的hm值不在table0表中,查询结果就不会出现。 外联接,包括左外联接、右外联接、全外联接的确大多数的程序员都不使用。宁肯用很长的程序代码来实现,但是用数据库sql来实现其实效率是最快的。 建议你了解外联接的知识。
运行SQL语句追加记录行到ACCESS数据表,需要考虑的技术细节非常多,并不简单。即使代码完全没问题也不表示数据可以被正确插入,因为它还涉及到数据库表的种种约束如有效性规则、数据类型、表键值约束等等,还有被引用变量中的值也会对语句能否成功运行有直接关系。只有在所有细节都处理好的情况下语句才有可能被成功执行。
这里提示检查重点下列几点
1) 对于插入数据表的"常量值"如果属于"文本"的需要用一对英文单引号''括起来,如果被插入的文本常量本身还含有英文单引号,那么请将每1个单引号写成两个'';
2)对于插入数据表的"常量值"如果属于"日期/时间"类型的,必须用一对#号括起来,注意不能用单引号'括起来,否则会报错,这是ACCESS数据库的特殊要求。我发现题主的代码里没有将日期/时间常量用#号括起来而是用单引号,如果您的数据表不含日期/时间类型字段,可以忽略这个提示;
3)对于数字型常量不要加引号。
为了方便排错,建议题主在执行SQL语句前插入下面代码:
MsgBox Sql
然后将消息框截图贴出来,这样我们就可以比较直观地检查您的代码最终拼接出来的语句到底哪里有误了。这样查错会比较有效率。
以上就是关于sql数据库查询两个表之间时间的比较全部的内容,包括:sql数据库查询两个表之间时间的比较、vb添加数据到access数据库问题, *** 作符丢失、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)